C++ QVector与'不匹配;运算符=';
在类构造函数中初始化QVector时遇到问题。这是我的头文件中的行:C++ QVector与'不匹配;运算符=';,c++,qt,constructor,header,qvector,C++,Qt,Constructor,Header,Qvector,在类构造函数中初始化QVector时遇到问题。这是我的头文件中的行: QVector<Person *> p; qp向量; 这是我的构造函数中的行: this->p = new QVector<Person *>(); this->p=newqvector(); 这就是错误: Error: no match for 'operator=' (operand types are 'QVector<Person*>' and 'QVector<
QVector<Person *> p;
qp向量;
这是我的构造函数中的行:
this->p = new QVector<Person *>();
this->p=newqvector();
这就是错误:
Error: no match for 'operator=' (operand types are 'QVector<Person*>' and 'QVector<Person*>*')
this->p = new QVector<Person *>();
^
错误:“运算符=”不匹配(操作数类型为“QVector”和“QVector*”)
这->p=新的QVector();
^
我不知道是什么问题。这里不需要新的
。尽管p
是QVector
类型的对象,而不是指向它的指针,但是p
是自动初始化的,因为QVector
有一个默认构造函数。您不需要动态地(使用new
)分配QVector
,因为您将其声明为静态分配的成员。您正在将QVector*分配给QVector;书写
向量qp
足够了,您的成员变量p已经是一个QVector。
由于使用了PIMPL习惯用法,您可以在不引起太大性能影响的情况下复制QVectors。副本是一写即复制,这意味着修改副本不会修改原始副本,但复制只会发生在您写入(或调整)新副本时 停止编写Java。在C++中,<代码>新< /COD>用于动态内存分配,而不是通用对象创建。因此,对象创建发生在构造函数的初始值设定项列表中,而不是在其主体中。