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

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -