1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

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

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

  1. chagin_yav

    chagin_yav Гость

    Репутация:
    0
    Здравствуйте,

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

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

    Допустим, есть класс 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;"

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

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

    gamecreator Гость

    Репутация:
    0
    [codebox]class MyClass
    {
    ...
    void operator>(MyClass* p);
    };
    void MyClass::operator>(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 Гость

    Репутация:
    0
    ! Нашёл решение проблемы,

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

    Код:
    void main ()
    {
    
    //!
    MyClass pointer1, pointer2;
    //!
    
    pointer1>pointer2;
    cout<<pointer1.i<<endl;
    cout<<(pointer1.next->i)<<endl;
    getch();
    }
     
Загрузка...
Похожие Темы - Перегрузка операторов
  1. lisica198808
    Ответов:
    0
    Просмотров:
    1.083
  2. MGeorge
    Ответов:
    0
    Просмотров:
    1.445
  3. sasha465
    Ответов:
    1
    Просмотров:
    1.531
  4. XADD
    Ответов:
    1
    Просмотров:
    1.158
  5. XADD
    Ответов:
    9
    Просмотров:
    2.622

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