Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Технологии > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 11.05.2008, 15:23   #1
chagin_yav
 
Регистрация: 04.01.2008
Сообщений: 4
Репутация: 10
По умолчанию Перегрузка операторов, Организация перегрузки операторов

(C++)

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

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

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

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

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

Буду благодарен за помощь....
chagin_yav вне форума   Ответить с цитированием
Старый 12.05.2008, 00:52   #2
MaTBeu
Eclipse Foundation
Профессионал
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Адрес: Стокгольм
Сообщений: 2,623
Репутация: 1148
По умолчанию

Если честно не очень понимаю суть такой перегрузки ">". Но если вам надо, то я думаю вот так
Код:
MyClass MyClass::operator>(MyClass &a)
{
      a=new MyClass(a); //хотя сомневаюсь в данной записи
      this=new MyClass(this); //и в этой тоже

      a->next=this;
}
По вашему алгоритму вроде так, но чувствую не будет оно так работать. Вообще, задачу вы мутную дали. Неясно к чему так усложнять?
MaTBeu вне форума   Ответить с цитированием
Старый 12.05.2008, 09:15   #3
chagin_yav
 
Регистрация: 04.01.2008
Сообщений: 4
Репутация: 10
По умолчанию

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

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

Код:
void main ()
{

//!
MyClass  pointer1,  pointer2;
//!

pointer1>pointer2;
cout<<pointer1.i<<endl;
cout<<(pointer1.next->i)<<endl;
getch();
}
chagin_yav вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программы с использованием операторов ветвления и циклов Vitas1234 Паскаль 9 11.06.2008 16:18
Использование операторов цикла кася Паскаль 3 02.05.2008 00:32
Оптимизировать перегрузку операторов Иллидан Общие вопросы C/C++ 14 24.04.2008 11:18
Несовместимость двух операторов August550 Помощь студентам 16 23.04.2008 21:30
проверить правильность расстановки операторов begin и end Тёмка Помощь студентам 1 10.12.2007 14:07


00:06.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.