Dzisiaj mam do Was następujące pytanie dotyczące przeładowania operatora >>. Otóż co muszę zrobić. Musze przeładować operator >>, tak aby korzystać później z zapisu cin>>c; gdzie c jest u mnie jakąś klasą do reprezentacji liczb zespolonych.
No i początkowo myślałem, że da się to zrobić analogicznie do przeładowania <<, które zrealizowałem tak:
std::ostream & operator<<(std::ostream &os, const complex &a)
{
os<<"("<<a.real_number<<", "<<a.imaginary_number<<")\n";
return os;
}
Stąd też myślałem, że przeładowanie >> polega na tym samym. Jednak w takim przeładowaniu kompilator widzi błąd. Ja nie za bardzo wiem dokładnie jaki, bo zazwyczaj wszyscy zajmują się przeładowywaniem <<, zamiast >>. Kompilator po prostu twierdzi, że "No operator >> matches these operands" Mógłby mnie ktoś naprowadzić dlaczego nie można wysłać składowej klasy do strumienia wejścia? :)
std::ostream & operator>>(std::ostream &os, const complex &a)
{
std::cout<<"Skladowa rzeczywista: "<<std::endl;
os>>a.real_number;
std::cout<<"Skladowa urojona: "<<std::endl;
os>>a.imaginary_number;
return os;
}