【发布时间】:2015-01-17 22:39:25
【问题描述】:
所以我真的很困惑为什么我会收到这个无效的操作数错误。我有两个班级,classA 和 ClassB。 ClassB 包含三个 ClassA 指针。 ClassA operator+= 已被重载如下:
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 类型的无效操作数到二元运算符+。
任何形式的帮助或建议将不胜感激。谢谢!
【问题讨论】:
-
B 类中的 mClassA 是否定义为常量?需要看它的声明
-
不,它没有定义为常量。它似乎不需要是一个常数,不是吗?它是一个指向 ClassA 对象的指针。
-
所以你要添加两个指针?对吗?
-
那些不是对象,它们是指针,你不能添加指针。
-
我是!这为我解决了问题! *((*this).mClassA) += *(rhs.mClassA) 似乎正在工作,或者正在编译。谢谢你的帮助!我真的很感激。
标签: c++ operator-overloading operand