QVector 无法与'operator='匹敌
QVector no match for 'operator='
在类构造函数中初始化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
。尽管p
是QVector
类型的对象,而不是指向它的指针,但由于QVector
具有默认构造函数,因此p
会自动初始化。
您正在将QVector*分配给QVector;写入
QVector p;
足够了,您的成员变量p已经是一个QVector。您可以复制QVectors,而不会因为使用PIMPL习惯用法而导致太大的性能损失。副本是写时复制,这意味着修改副本不会修改原始副本,但副本只会在您写入(或调整大小)新副本时发生。
相关文章:
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 'operator='已弃用:改用 QDir::setPath()
- 过载'operator new'如何导致无限循环?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 处理"no operator found"
- 如何编写 operator= 用于使用虚拟方法与非平凡成员的匿名联合
- 运算符重载:"operator+"必须采用零个或一个参数
- 使用 operator() 扩展 Eigen::EigenBase
- 错误消息:使用"string* +="后"no match for 'operator+='"
- 有没有办法修改'operator->',以便'z->im'返回复数的虚部
- "operator +="行为异常的定义
- C++ "error: use of overloaded operator '*' is ambiguous"似乎只有一场比赛
- 无法与'operator !='匹敌
- 无法与'operator='匹敌
- C++'operator='无法匹敌
- 在'* __result = * __first'中无法与'operator='匹敌
- QVector 无法与'operator='匹敌
- STL C++:无法与'operator*'匹敌
- 无法与'operator=='匹敌