0

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

我不知道有什么问题。

4

3 回答 3

1

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

于 2014-10-11T16:18:30.223 回答
0

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

于 2014-10-11T16:18:23.397 回答
0

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

Q向量 p;

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

于 2014-10-11T18:48:50.750 回答