c++ - operator overloading as a friend -
i trying write complex number class , overloading of operator + - *
friend below:
complexnumber operator+(const complexnumber &c1, const complexnumber& c2) { return complexnumber(c1._r+c2._r, c1._i+c2._i); } ostream& operator << ( ostream &out, complexnumber &c){ out << c.getreal() <<'+' << c.getimg() <<'i' << std::endl; }
i experience no problems while doing:
complexnumber c1(1,2); cout << c1 << endl;
but when try following:
complexnumber c2(2,1); cout << c1 + c2 << endl;
i error:
no known conversion argument 1 ‘complexnumber’ ‘complexnumber&’
i know problem that return value of operator+
complexnumber
, ostream
operator needs complexnumber&
.
i don't know how deal this. thanks
i don't know why argument 1, should make output overload take const reference:
ostream& operator << ( ostream &out, const complexnumber &c){ ^^^^^
it's better because temporary can used , don't modify it.
Comments
Post a Comment