QVector 无法与'operator='匹敌

QVector no match for 'operator='

本文关键字:匹敌 operator QVector      更新时间:2023-10-16

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

我不知道出了什么问题。

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

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

您正在将QVector*分配给QVector;写入

QVector p;

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