所以我真的很困惑为什么我得到这个无效的操作数错误。我有两个类,classA和ClassB。 ClassB包含三个ClassA指针。 ClassA运算符+ =已按如下方式重载:
ClassA& ClassA::operator+=(const ClassA& rhs)
{
(*this).dataMem += rhs.dataMem;
return *this;
}
这是有效的。当我在ClassB中重载operator + =和operator +时,我的问题出现了。操作员只需对其中的ClassA对象执行+操作即可。
ClassB& ClassB::operator+=(const ClassB& rhs)
{
(*this).mClassA + rhs.mClassA;
return *this;
}
我很困惑,因为我使用完全相同的格式和调用重载了ClassB中的其他运算符,但我只是在重载+和+ =运算符时收到无效的操作数错误。
这是我收到的错误: ClassB.cpp:93:错误:类型ClassA *和ClassA * const到二元运算符+的无效操作数。
非常感谢任何形式的帮助或建议。谢谢!
答案 0 :(得分:0)
void ClassB::operator+=(const ClassB& rhs)
{
(*this).mClassA + rhs.mClassA;
}
此函数接受ClassB类型的参数,因此当您调用它时,不会调用ClassA的operator +将其修改为
void ClassB::operator+=(const ClassA& rhs)
{
(*this).mClassA + rhs.mClassA;
}
它会起作用