首页 > 解决方案 > 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();
}

标签: c++qtwebassembly

解决方案


推荐阅读