QVector与'operator ='不匹配

时间:2014-10-11 16:13:56

标签: c++ qt constructor header qvector

我在类构造函数中初始化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 *>();
         ^

我不知道问题是什么。

3 个答案:

答案 0 :(得分:1)

您不需要动态(使用new)分配QVector,因为您已将其声明为静态分配的成员。

答案 1 :(得分:0)

这里不需要new。尽管pQVector类型的对象而不是指向它的指针,但p会自动初始化,因为QVector具有默认构造函数。

答案 2 :(得分:0)

您正在为QVector分配QVector *;写

QVector p;

就足够了,你的成员变量p已经是QVector了。 由于使用了PIMPL习惯用法,您可以复制QVectors而不会产生太大的性能损失。副本是写入时的副本,这意味着修改副本不会修改原件,但是副本只会在您编写(或调整大小)新副本时发生。