Перегрузка операторов

  • Автор темы chagin_yav
  • Дата начала
C

chagin_yav

#1
Здравствуйте,

Столкнулся с такой проблемой: необходимо в программе реализовать перегрузку операторов "больше" и "меньше" )), т.е. ">" и "<".

Попробую на простом примере объяснить суть задачи:

Допустим, есть класс MyClass;

Код:
class MyClass 
{ 
public: 
MyClass(MyClass *link);
int i;
MyClass *next;
};

MyClass::MyClass(MyClass *link)
{
cout << "\n Введите i: ";
cin >> this->i;
};
В нашем классе нужно обеспечить реализацию простого односвязного списка, т.е:
Код:
void main ()
{

MyClass *pointer1, *pointer2;
pointer1 = new MyClass (pointer1);
pointer2 = new MyClass (pointer2);
pointer1->next = pointer2;
}
Дело в том что вот эту запись "pointer1->next = pointer2;" нужно заменить записью что-то вроде
Код:
pointer1>pointer2
То есть надо перегрузить оператор ">" таким образом, чтобы после записи "pointer1>pointer2"
и для pointer1 и для pointer2 вызывался конструктор создания, то есть такие операции
Код:
pointer1 = new MyClass (pointer1);
pointer2 = new MyClass (pointer2);
Плюс должна быть произведена связка этих двух указателей, то есть "pointer1->next = pointer2;"

Подскажите пожалуйста как реализовать такую задачу.

Буду благодарен за помощь....
 
G

gamecreator

#2
[codebox]class MyClass
{
...
void operator>(MyClass* p);
};
void MyClass::eek:perator>(MyClass* p)
{
this->next=p;
}
или
class MyClass
{
...
friend void operator>(MyClass* p1,MyClass* p2);
};
void operator>(MyClass* p1,MyClass* p2)
{
p1->next=p2;
}[/codebox]
 
C

chagin_yav

#3
! Нашёл решение проблемы,

в теле функции main нужно использовать НЕ указатели на объекты, т.к. указатели - это целый тип, в следствие перегрузка просто не срабатывает.
т.е.

Код:
void main ()
{

//!
MyClass pointer1, pointer2;
//!

pointer1>pointer2;
cout<<pointer1.i<<endl;
cout<<(pointer1.next->i)<<endl;
getch();
}