0

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

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'

这是我在这里找到的初始化

我还读到它不可能在类范围内没有初始化向量,应该在构造函数中完成,我理解但是我无法在类范围内定义 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)
{ //...

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

4

1 回答 1

2

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

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

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

或排队:

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

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

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

我试过了,它可以编译并且应该可以工作。上述模式实际上是原始海报在评论中询问的聚合初始化。

于 2015-12-16T23:42:36.257 回答