我在类构造函数中初始化QVector时遇到了问题。这是我的头文件中的行:
QVector<Person *> p;
这是我的构造函数中的一行:
this->p = new QVector<Person *>();
这就是错误:
Error: no match for 'operator=' (operand types are 'QVector<Person*>' and 'QVector<Person*>*')
this->p = new QVector<Person *>();
^
我不知道问题是什么。
答案 0 :(得分:1)
您不需要动态(使用new
)分配QVector
,因为您已将其声明为静态分配的成员。
答案 1 :(得分:0)
这里不需要new
。尽管p
是QVector
类型的对象而不是指向它的指针,但p
会自动初始化,因为QVector
具有默认构造函数。
答案 2 :(得分:0)
您正在为QVector分配QVector *;写
QVector p;
就足够了,你的成员变量p已经是QVector了。 由于使用了PIMPL习惯用法,您可以复制QVectors而不会产生太大的性能损失。副本是写入时的副本,这意味着修改副本不会修改原件,但是副本只会在您编写(或调整大小)新副本时发生。