Przeciążanie operatorów - proszę o pomoc

0

Podczas kompilacji mam taki błąd:
In function `std::ostream& operator>(Ulamek&, Ulamek&)':
invalid initialization of reference of type 'std::ostream&' from expression of type 'Ulamek'

Proszę o pomoc...

#include <iostream>
using namespace std;

class Ulamek
{ 
 int l;                  // licznik
  int m;                  // mianownik
  int nwp(int p, int q);  // najwiekszy wspolny podzielnik
public:
  Ulamek(int a=0, int b=1)      // Konstruktor
  { int q=nwp(a,b);
    if(b < 0) q = -q;      // mianownik ma być zawsze dodatni
    l = a/q;
    m = b/q;
  }
  int  ZwrocLicznik()const { return l; }
  int  ZwrocMian()const { return m;}
  friend ostream& operator << (ostream &wy, const Ulamek &f);
  friend ostream& operator>(const Ulamek &a, const Ulamek &b);
};
int Ulamek::nwp(int p, int q)
{ int r;
  p = abs(p);        // obliczenia na wartosciach nieujemnych
  q = abs(q);

  // Przypadki szczególne
  if(p == 0) if(q == 0) return 1; else return q;
    else if(q == 0) return p;

  // p>0, q>0
  r = p % q;
  while(r) { p = q; q = r; r = p % q; }
  return q;
}
template <class Ulamek>
Ulamek maks(Ulamek a, Ulamek b)
{
    //b = Ulamek.ZwrocLicznik()/Ulamek.ZwrocMian();
    return a > b ? a : b ;
}

int main ()
{
  Ulamek  f1(1,2);
  Ulamek  f2(1,5);
  //cout << "maks(10.1, 15.2) = " << maks(10.1, 15.2) << endl ;
  cout << "maks(10, 15) = " << maks(f1, f2) << endl ;
  cout << f1.ZwrocLicznik() << endl;
  cin.get();
  return 0;
}

ostream& operator<<(ostream& wy, const Ulamek &f)
{
  wy << f.l << "/" <<f.m;
  return wy;
}
ostream& operator>(Ulamek &a, Ulamek &b)
{
        Ulamek a1 = a.ZwrocLicznik()/a.ZwrocMian();
        Ulamek b1 = b.ZwrocLicznik()/b.ZwrocMian();
        return a1 > b1 ? a1 : b1 ;
}
0

Instrukcja:

  • przeczytaj błąd;
  • spójrz na linijkę powodującą błąd błędem
  • poklnij na własną głupotę/ślepotę/co chcesz.
0

Właśnie nie do końca kumam tego błędu...:-( Możesz pomóc, co robię źle?

0

Na jakiej wartości operuje warunek? Jaki typ zwraca konkretny rodzaj porównania? Nie, 1 < 4 nie równa się ofstream&...

1 użytkowników online, w tym zalogowanych: 0, gości: 1