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

Тема в разделе "Общие вопросы по С и С++", создана пользователем chagin_yav, 11 май 2008.

  1. chagin_yav

    chagin_yav Гость

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

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

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

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

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

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

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

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

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

    gamecreator Гость

    [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]
     
  3. chagin_yav

    chagin_yav Гость

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

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

    Код (Text):
    void main ()
    {

    //!
    MyClass pointer1, pointer2;
    //!

    pointer1>pointer2;
    cout<<pointer1.i<<endl;
    cout<<(pointer1.next->i)<<endl;
    getch();
    }
     
Загрузка...
Похожие Темы - Перегрузка операторов
  1. lisica198808
    Ответов:
    0
    Просмотров:
    940
  2. MGeorge
    Ответов:
    0
    Просмотров:
    1.343
  3. sasha465
    Ответов:
    1
    Просмотров:
    1.458
  4. XADD
    Ответов:
    1
    Просмотров:
    1.102
  5. XADD
    Ответов:
    9
    Просмотров:
    2.529

Поделиться этой страницей