dorota08x utworzono 9 stycznia 2013 utworzono 9 stycznia 2013 mam taka klase: class Ulamek { long l, m; long nwd(long, long) const; void Nowy(long, long); public: Ulamek(long ld=0, long md=1L) { Nowy(ld, md); } Ulamek operator+(const Ulamek &U)const; Ulamek operator-(const Ulamek &U)const; Ulamek operator*(const Ulamek &U)const; // Ulamek operator/(const Ulamek &U) const; Ulamek operator+=(const Ulamek &U); bool operator==(const Ulamek &U)const; bool operator<(const Ulamek &U)const; friend ostream& operator<<(ostream&, Ulamek); friend istream& operator>>(istream&, Ulamek&); friend Ulamek abs(Ulamek); }; i zrobilam przeladowanie operatora << i wyrzuca mi bład (" Ulamek::m is not accessible") i nie wiem jak to naprawic. pomoże ktos? moje przeladowanie tego operatora: ostream& operator<<(ostream &wyjscie, const Ulamek &U) { if(U.m==1L) wyjscie<<U.l; else wyjscie<<U.l<<"/"<<U.m; return wyjscie; }
leggo komentarz 9 stycznia 2013 komentarz 9 stycznia 2013 (edytowane) Przeciążenie nie działa ponieważ deklaracja i definicja nie są spójne. Podjesz dwie różne listy parametrów. W definicji drugi parametr jest stałą i jest podawany jako referencja, a w deklaracji obu tych rzeczy nie ma. Dla kompilatora to są istotne różnice. Zmień deklarację na taką, a będzie działać: friend ostream& operator<<(ostream&, const Ulamek&);
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.