+= 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.

Original source

Related problems