2015-12-07 4 views
0

Я пытаюсь перегрузить оператор + = по классу имени фильма:Ошибка при перегрузке оператора + = с ++

Movie& operator+=(const Movie& other) 
{ 
*this=*this+other; 
return*this;} 

дает мне ошибку Movie.h: 47: 10: ошибка: с «Movie & Movie :: operator + = (const Movie &) ' как мне его загрузить?

+2

Где это определение? Внутри класса или снаружи? Также 'operator +' обычно определяется в терминах 'operator + =', а не наоборот. – Kevin

+1

Какова полная ошибка? – hlt

+1

Определяется ли оператор + для объектов Movie? Если да, можете ли вы опубликовать его определение? – Tal

ответ

1

Несмотря на обнаруженную проблему, код структурно неверен. Он вызывает оператор присваивания внутри операции + =, что не обязательно и является просто перетаскиванием. Вместо этого operator += должен быть правильно закодирован с модификацией объекта, а operator + выражен в терминах + =.

+0

, поэтому внутри блока у меня должно быть * this + = other ..? или что? – aviadm71

+0

@ aviadm71 Ваша функция 'operator + =' должна делать то, что делает ваша функция 'operator +', а для 'this', а не для нового объекта. 'operator +' должен затем использовать 'operator + =' внутренне (для нового объекта). – Kevin

+0

Я все еще не понимаю. Что мне нужно набирать внутри блока? Я пробовал несколько версий, не компилирует – aviadm71

Смежные вопросы