Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как перегрузить оператор <<  (Прочитано 1144 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tro9an

  • Автор темы
  • Любитель
  • *
  • Сообщений: 55
    • Просмотр профиля
Как перегрузить оператор <<
« : 07 Декабря 2010, 21:03:00 »
есть задача типа
class Myclass{
   char s[50];
public:
   Myclass(const char* S){
     strcpy(s,S);
   }
}

void operator << ()
{}

int main(){
   Myclass Ob("Operators reload)))");
   cout<<Ob;
   return 0;
}
надо чтоб вывело обьект Ob
Дайте последовательность как это сделать, и ненадо за меня решать эту задачу, просто дайте последовательность!
З.Ыпробовал сам, ничерта не получается

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Как перегрузить оператор <<
« Ответ #1 : 07 Декабря 2010, 21:35:23 »
void operator << ()
{}
Дайте последовательность как это сделать, и ненадо за меня решать эту задачу, просто дайте последовательность!
Оператор перенаправления вывода в поток имеет другую сигнатуру. Как минимум, он должен возвращать ссылку на std::ostream и примать ссылку на std::ostream в качестве параметра. А если перегрузка выполняется вне класса Myclass, то он должен принимать ещё и ссылку на объект Myclass в качестве параметра.

Всё ещё не хотите готовый пример?
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн Marat10.04

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Как перегрузить оператор <<
« Ответ #2 : 02 Февраля 2011, 02:20:01 »
Нужен оператор<<  являющийся другом этого класса.
Прототип выглядеть так:
                    friend ostream& operator<<(ostream&, object);

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Как перегрузить оператор <<
« Ответ #3 : 02 Февраля 2011, 05:57:11 »
Зачем другом? У врагов что-ли классы принципиально печататься не хотят? Можно и без дружбы если ты не собираешься лезть в private и protected члены твоего класса.

Оффлайн Marat10.04

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Как перегрузить оператор <<
« Ответ #4 : 02 Февраля 2011, 07:06:50 »
Согласен(в общем случае).Но как обойтись без друга в этом случае?
Скорее требуется напечатаь что-то из  char s[50]

class Myclass{
   char s[50];
public:
   Myclass(const char* S){
     strcpy(s,S);
   }
}

//void operator << ()
//{}

int main(){
   Myclass Ob("Operators reload)))");
   cout<<Ob;
   return 0;
}

« Последнее редактирование: 02 Февраля 2011, 07:35:18 от Marat10.04 »

Оффлайн __v1tos

  • Участник
  • *
  • Сообщений: 105
  • Ubuntuu 10.10 x86-64
    • Просмотр профиля
Re: Как перегрузить оператор <<
« Ответ #5 : 03 Февраля 2011, 19:16:50 »
(Нажмите, чтобы показать/скрыть)
AMD Phenom II 945, GA-MA790GPT-UD3H (HD 3300), 5 GiB ram

Оффлайн Marat10.04

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Как перегрузить оператор <<
« Ответ #6 : 03 Февраля 2011, 20:16:18 »
Зачем включать :
       #include <stdio.h>
Когда уже подключили:
      #include<iostream>

Оффлайн __v1tos

  • Участник
  • *
  • Сообщений: 105
  • Ubuntuu 10.10 x86-64
    • Просмотр профиля
Re: Как перегрузить оператор <<
« Ответ #7 : 03 Февраля 2011, 20:17:41 »
Почему бы и да.
А вообще фтопку иострим
AMD Phenom II 945, GA-MA790GPT-UD3H (HD 3300), 5 GiB ram

 

Страница сгенерирована за 0.017 секунд. Запросов: 22.