|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.03.2009, 22:58 | #11 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 25
|
pu4koff, я не копировал код, просто для себя хочу понять.
я хотел для cout перегрузить, ну тоесть вводишь for(int i=0;i<n;i++){ cout<<mas[i]<<ler[i]; } а выводит только то где ler[i] ==10; Последний раз редактировалось z3rg; 19.03.2009 в 23:00. |
19.03.2009, 23:11 | #12 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
откуда тогда в вашем классе взялось?
ostream& operator<<(ostream& s, const MY_TYPE& t) { s << t.a << endl << t.b; return s; } Я уже говорил, что такое использование cout будет развернуто в 2 вызова оператора <<. Нормально это никак не реализуешь. Можно перегрузить операторы для int и char*, в операторе для int записывать в глобальную переменную переданный возраст, а в операторе для строки повторно его проверять и по необходимости выдавать на экран. Можно еще обернуть это в try/catch и при попытке вывода "ненужной" информации выдавать исключение) Но это все извращение. Лучше забыть, что я это говорил |
19.03.2009, 23:15 | #13 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 25
|
pu4koff, понятно.
Спасибо большое всем что помогли. // хотел спросить чуть не забыл что обозначает ostream& Последний раз редактировалось z3rg; 19.03.2009 в 23:20. |
20.03.2009, 02:02 | #14 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Реализовать можно, только если функция перегрузки будет членом класса.
|
28.02.2010, 06:17 | #15 |
Регистрация: 26.02.2010
Сообщений: 3
|
Что за глупости
Re: Перегрузка ввода/вывода в/из потока
А у меня с перегрузкой операторов ввода/вывода такая проблема простейший класс Код:
Код:
Код:
пишу Код:
все работает окей. Возникает вопрос, то ли лыжы не едут, то ли я еду по асфальту?
Ты не всегда прав, если ты думаешь что это не так, прочитай сначала...
|
28.02.2010, 08:28 | #16 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Попробуйте так поправить:
Код:
|
28.02.2010, 14:42 | #17 |
Регистрация: 26.02.2010
Сообщений: 3
|
точно, это помогло, убрало первую ошибку
а вот вторая осталась, хотя вроде всё правильно, но чтото ему не нравиться. error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
Ты не всегда прав, если ты думаешь что это не так, прочитай сначала...
|
28.02.2010, 14:51 | #18 |
Регистрация: 26.02.2010
Сообщений: 3
|
Всё, перегрузил функцию GetValue, теперь всё нормально, что ж я раньше не додумался...
Код:
Ты не всегда прав, если ты думаешь что это не так, прочитай сначала...
|
02.03.2010, 02:58 | #19 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
раз операторы ввода вывода - друзья класса, использовать методы GetValue - нет необходимости, добавив неконстантный метод, возвращающий ссылку на данные - вы нарушили инкапсуляцию.
операторы ввода - вывода - как правило свободные ф-ии, и если они работают с какими-то обьектами, то они это делают через виртуальные ф-ии у этих обьектов (что-нить типа Load(std:stream&), Save(std:stream&) const). Автор поста изначально неправильно хочет определить оператор вывода. В нем не должно быть логики, решающей, выводить в поток обьект или нет. Оператор вывода должен выводить обьект в поток и все. Логика должна быть в специально написанной ф-ии, которая выводит массив обьектов или, если юзать стльные алгоритмы - должен быть написан предикат, который и будет решать, надо ли выводить обьект в поток или нет. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
задачка перегрузка оператора + | z3rg | Общие вопросы C/C++ | 7 | 17.03.2009 13:23 |
Перегрузка оператора + (С++) | MjRed | Помощь студентам | 1 | 15.12.2008 18:57 |
Перегрузка оператора | Crucian | Общие вопросы C/C++ | 2 | 22.10.2007 09:44 |
Использование оператора условия | Virtson | Microsoft Office Access | 2 | 15.12.2006 16:13 |