Given the following code:
#include <iostream>
using std::ostream;
class A {
int x;
public:
A(int x) :
x(x) {
}
A& operator+=(const A& a) {
this->x = this->x + a.x;
return *this;
}
friend ostream& operator<<(ostream& os, const A& a);
};
A operator+(const A& a1, const A& a2) {
return A(a1) + a2;
}
ostream& operator<<(ostream& os, const A& a) {
return os << a.x;
}
int main() {
const A a1(2);
A& sum = a1 + a1; // error**************
std::cout << sum;
}
I get the following error:
invalid initialization of non-const reference of type 'A&' from an rvalue of type 'A'
But I don't understand what is the reason of this error. At all, I get new object from operator+
and I define a reference (sum
) to this object , so what is the problem in this way? And how can I fix it?
Aucun commentaire:
Enregistrer un commentaire