我想要一个包含字符串的二维向量,所以我尝试了类似的方法:

QVector<QVector<QString*> > register_options(8, QVector<QString*>(8)); //getting 'expected identifier before numeric constant'
QVector<QVector<QString> > register_options; // getting 'field has incomplete type'


这是我发现的初始化here

我还读到它不可能在类范围内没有初始化矢量,应该在构造函数中完成,据我了解,但是我无法在类范围内定义var的原型。

我也试过

//header
QVector<QString> register_bits; // field has incomplete type
QVector<QVector<QString> > register_options; // field has incomplete type
//source
registers::registers() : register_bits(8, 0), register_options(8, register_bits)
{ //...


所以我的问题是:如何在类范围内定义向量,然后在构造函数中对其进行初始化?

最佳答案

所以我的问题是:如何在类范围内定义向量
  然后在构造函数中初始化它?


使用C ++ 11初始化程序列表初始化内存中此类结构的可能方法之一:

class MyClass
{
private:
    QVector<QVector<QString> > vct {{"", ""}, {""}, {"", "", ""}};
};


或符合以下条件:

QVector<QVector<QString> > vct = {{"", ""}, {""}, {"", "", ""}};


或在构造函数或任何类的方法中:

vct = {{"", ""}, {""}, {"", "", ""}};


我试过了,可以编译并且可以工作。上面的模式实际上是aggregate initialization,是原始海报在评论中要求的。

09-17 19:48