我是c++和Qt的新手,我正在尝试像这样在类初始化列表中初始化一个QVector:
MyClass::MyClass(QWidget *parent) : QMainWindow(parent) , myVector(QVector<double>(100))
我本以为 QVector 已经分配了 100 个索引,但是当我尝试读取 myVector[0]
时,出现了一个断言错误,提示 "Unhandled exception at 0x0143bf77 in test.exe: 0xC0000005: Access violation reading location 0x00000004.",程序停在了 Qt 的这一行代码处:
inline T &QVector<T>::operator[](int i)
{ Q_ASSERT_X(i >= 0 && i < d->size, "QVector<T>::operator[]", "index out of range");
return data()[i]; }
我相信这表明我正在尝试访问尚未分配的成员,所以我猜我没有正确使用初始化列表。我可以将其制作为指针,并在构造函数中进行new QVector(100)
,但我想知道问题在哪里以及如何使其正确。
myVector(100)
即可。 - coprocfirst()
不能使用。 - Michel FeinsteinmyVector(100)
,我会得到以下错误:非 const 引用的初始值必须是左值。 - Michel Feinstein