Недопустимая ошибка операнда в перегруженном операторе

Поэтому я действительно не понимаю, почему я получаю эту ошибку недопустимого операнда. У меня есть два класса, 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 * относятся к двоичному оператору +.

Любая помощь или предложения будут с благодарностью. Спасибо!

0

Решение

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

Эта функция принимает аргумент типа ClassB, поэтому оператор + ClassA не будет вызываться, когда вы вызываете его, измените его на

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

и это будет работать

0

Другие решения


По вопросам рекламы [email protected]