Mam taki mały problem z przeciążaniem operatora << w C++. Funkcja przeciążająca operator wygląda tak:
ostream& operator<<(ostream & c, MojaKlasa &ob){
if(ob.wartosc > 10)
c<<"W porzadku\n"<<ob.liczba;
else
c<<ob.liczba;
return c;
}
Teraz w funkcji main kiedy tworze obiekt w ten sposob:
MojaKlasa a,b;
cin>>a>>b;
cout<<a<<endl;
To wszystko jest w porządku, natomiast kiedy ostatni wiersz ma wyglądać tak:
cout<<a+b<<endl;
to wtedy dostaje error: error: no match for 'operator<<' in 'std::cout << c.MojaKlasa::operator+(((const MojaKlasa&)((const MojaKlasa*)(& a))))'
Sam operator dodawania jest przeciązony w ten sposób:
MojaKlasa MojaKlasa::operator+(const MojaKlasa &ob){
MojaKlasa klasa(this->wartosc + ob.wartosc);
return klasa;
}
Dodam, że deklaracja funkcji ostream w MojaKlasa jest funkcją zaprzyjaźnioną i wygląda tak:
friend ostream& operator<<(ostream& c, MyCal &ob);
Ktoś może mi wyjaśnić w czym tkwi błąd i jak go naprawić?