类范围内的二维向量

时间:2015-12-16 23:12:36

标签: c++ qt qvector

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

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)
{ //...

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

1 个答案:

答案 0 :(得分:2)

  

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

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

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

或排队:

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

或者在构造函数或任何类中&#39;方法:

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

我尝试了,编译并应该工作。上面的模式实际上是aggregate initialization原始海报在评论中提到的。