Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

(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,619
По умолчанию

Если честно не очень понимаю суть такой перегрузки ">". Но если вам надо, то я думаю вот так
Код:
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
По умолчанию

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

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

Код:
void main ()
{

//!
MyClass  pointer1,  pointer2;
//!

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программы с использованием операторов ветвления и циклов Vitas1234 Паскаль, Turbo Pascal, PascalABC.NET 9 11.06.2008 16:18
Использование операторов цикла кася Паскаль, Turbo Pascal, PascalABC.NET 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 13:07