x-kom hosting

class Ulamek - przeladowania operatorow

dorota08x
utworzono
utworzono

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
komentarz (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.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.