Przeładowanie operatorów

0

Witam,
uczę się właśnie przeładowywać operatory i na razie nie miałem problemu z przeładowaniem +,-,*,/ schody pojawiły się gdy chciałem przeciążyć <,> napisałem coś takiego wzorując się na przykładach z tej strony http://kursy.ddt.pl/?LessonId=305:

#include <iostream>
#include <conio.h>
using namespace std;

class dom
{
    int x;
    public:
    dom(int x1=0):x(x1){}
    void wczytaj();
    bool operator < (const dom q);
    void wypisz();
};

void dom::wczytaj()
{
    cin>>x;
}

void dom::wypisz ()
    {
     cout<< "x="<<x<<endl;
    }

bool dom::operator < (const dom &q)
{
     if(x<q.x) return true;
     else return false;
}

int main (void)
{
    dom a,b;

    a.wczytaj();
    b.wczytaj();

    a.wypisz();
    b.wypisz();

    if (a<b) cout<<"Mniejsze jest "<<a;

    getch();
    return 0;
}

Prosiłbym o wytłumaczenie jak się przeładowuje operatory < ,>.

0
  bool operator < (const dom q);

Mialo byc:

  bool operator<(const dom & q);

Czy nie potrafiles tego zauwazyc, kompilator nic nie mowi ??!!

 if (a<b) cout<<"Mniejsze jest "<<a;

A gdzie masz dom::operator<<(ostream &, const dom &) ??, kompilator tez nic nie powiedzial ??

  if(x<q.x) return true;
     else return false;

Za bardzo komplikujesz sobie kod....

  return x < q.x; 

No i po co conio.h i getch ??

0

Problem to ty masz z przeładowaniem << a nie < i >
Zjadleś tylko & przy typie w deklaracji funkcji (w klasie). Poza tym nazwy klas piszemy dużą literką ;)
Problem w tym ze chcesz zrobic

cout<<a

A niby skąd program ma wiedzieć jak wypisać obiekt twojej klasy? o_O
Musisz dać w klasie np.:

friend ostream& operator<<(ostream& strumien, dom& obiekt)
{
  return strumien<<obiekt.x;
}

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