Поэтому я действительно не понимаю, почему я получаю эту ошибку недопустимого операнда. У меня есть два класса, ClassA и ClassB. ClassB содержит три указателя ClassA. Оператор ClassA + = был перегружен следующим образом:
ClassA& ClassA::operator+=(const ClassA& rhs)
{
(*this).dataMem += rhs.dataMem;
return *this;
}
И это работает, и все. Моя проблема возникает, когда я перегружаю оператор + = и оператор + в ClassB. Оператор должен просто выполнить операцию + над объектами ClassA в нем.
ClassB& ClassB::operator+=(const ClassB& rhs)
{
(*this).mClassA + rhs.mClassA;
return *this;
}
Я сбит с толку, потому что я перегружал другие операторы в ClassB, используя точно такой же формат и вызовы, но я получаю только ошибку недопустимого операнда при перегрузке операторов + и + =.
Это ошибка, которую я получаю:
ClassB.cpp: 93: ошибка: недопустимые операнды типов ClassA * и ClassA * относятся к двоичному оператору +.
Любая помощь или предложения будут с благодарностью. Спасибо!
void ClassB::operator+=(const ClassB& rhs)
{
(*this).mClassA + rhs.mClassA;
}
Эта функция принимает аргумент типа ClassB, поэтому оператор + ClassA не будет вызываться, когда вы вызываете его, измените его на
void ClassB::operator+=(const ClassA& rhs)
{
(*this).mClassA + rhs.mClassA;
}
и это будет работать