Для образовательных целей я хочу перегрузить и использовать оператор + = в каскаде.
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, no?
Спасибо.