我想要一个包含字符串的二维向量,所以我尝试了类似的方法:
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,是原始海报在评论中要求的。