Для образовательных целей я хочу перегрузить и использовать оператор + = в каскаде.+ = перегрузка оператора и каскадирование?
class a {
public:
a();
a& operator+= (float f);
private:
float aa;
}
a() {
aa = 0;
}
a& operator+= (float f) {
aa += f;
return *this;
}
a b;
b += 1.0; // Works.
b += 1.0 += 1.0; // Error : Expression must be a modifiable lvalue.
Я не понимаю, почему выше не работает (в стороне от возможных ошибок синтаксиса - не пытался скомпилировать этот пример кода). Возвращая * это в перегруженном операторе + = метод, я бы ожидал, что второй + = 1.0 будет вызван на объект b, нет?
Спасибо.
Вы должны размещать код без лишних «забавными» ошибок, которые не связаны с проблемой, которую вы пытаетесь показать. – juanchopanza
Честно говоря, я всегда делал что-то вроде b + = 1.0 + 2.0; – IssamTP
[Приоритет оператора] (http://en.cppreference.com/w/cpp/language/operator_precedence). '+ =' оценивается справа налево. – Nabla