Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QVector与'不匹配;运算符=';_C++_Qt_Constructor_Header_Qvector - Fatal编程技术网

C++ 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时遇到问题。这是我的头文件中的行:

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>用于动态内存分配,而不是通用对象创建。因此,对象创建发生在构造函数的初始值设定项列表中,而不是在其主体中。