c++ - Qt WebAssembly 和 QVector 的继承
问题描述
我正在尝试使用 Qt for WebAssembly。我正在使用 QVector,但我想添加一些方便的查找器方法。所以我尝试像下面的代码一样进行子类化。编译器抱怨 vec.begin() 和 vec.end() 不存在。如果我将 vec 从 Foo_Vector 更改为 QVector (没有子类化),它就可以工作。
使用子类版本时,来自 QVector 的其他方法也变得未定义 - 例如大小。
我尝试在 Foo_Vector 上定义一个方法:
size_t size() const { return QVector<Foo>::size(); }
这会产生关于非静态方法的错误。所以我试着这样做:
QVector<Foo> * ptr = static_cast<QVector<Foo>>(this);
这会产生一个错误,即没有从 Foo_Vector * 到 QVector * 的转换。
有人有解释吗?我是否必须通过组合来做到这一点,并为我想做的任何事情实现传递方法?
#include <QCoreApplication>
#include <QVector>
class Foo {
public:
int a;
int b;
};
class Foo_Vector: public QVector<Foo> {
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Foo_Vector vec;
for (auto it = vec.begin(); it != vec.end(); ++it) {
}
return a.exec();
}