重载运算符中的操作数错误无效

时间:2014-11-20 06:39:58

标签: c++ operator-overloading operand

所以我真的很困惑为什么我得到这个无效的操作数错误。我有两个类,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到二元运算符+的无效操作数。

非常感谢任何形式的帮助或建议。谢谢!

1 个答案:

答案 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;
}

它会起作用