0

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

任何形式的帮助或建议将不胜感激。谢谢!

4

1 回答 1

0
void ClassB::operator+=(const ClassB& rhs)
{
    (*this).mClassA + rhs.mClassA;
}

This function accepts an argument of type ClassB, so operator + of ClassA will not be called when you call this modify it to

void ClassB::operator+=(const ClassA& rhs)
{
    (*this).mClassA + rhs.mClassA;
}

and it will work

于 2014-11-20T06:58:35.913 回答