+= operator overloading and cascading?
c++, operator-overloading
Solution
b += 1.0 += 1.0;
The associativity for `+=` is right-to-left. So the above is interpreted as:
(b += (1.0 += 1.0));
Does that make sense? NO.
In order to make it work, you need to write it as:
(b += 1.0) += 1.0;
Hope that helps.
Problem
For educative purposes, I wish to overload and use the += operator in cascade. ``` 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. ``` I don't understand why the above doesn't work (aside of the possible syntax mistakes -- didn't try to compile this sample code). Returning *this in the overloaded operator+= method, I would expect the second += 1.0 to be called on the b object, no? Thanks.