![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
yngwie19 |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Доброго времени суток. Начал разбираться с темой перегрузка операторов и сразу встал. В книге вводная часть немного пропущена, (так сказать перешли сразу к делу). Мне бы хотелось подробнее разобраться в том, что Я конкретно делаю, когда описываю функцию оператор.
Например в книге дан пример:
Для переопределения << для вывода объектов типа clock требуется следующее определение:
Теперь можно организовать вывод для объектов типа clock следующим образом:
Мне бы хотелось, чтобы Вы мне объяснили функцию ostream& operator<<(ostream& strm, clock& c), что она делает, и как это работает. P.S: Кстати пример из книги у меня не компилится )) |
||||||
|
|||||||
mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
Добавлено @ 15:49 и как сейчас помню функция должна быть дружественной к классу (структуре) Добавлено @ 15:50
Это сообщение отредактировал(а) mrbrooks - 3.10.2008, 15:51 |
||||
|
|||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
не компилится
![]() ![]() |
|||
|
||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
yngwie19, Возможно ошибка в твоем коде. Вот простой пример использования перегруженных операции ввода и вывода.
Если есть вопросы, задавай. ![]() -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
||||
|
||||
yngwie19 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
IKM2007, Спасибо за разъяснение Я все понял, только почему когда Я вместо
ставлю просто
он мне выдает кучу ошибок и почему-то говорит что у меня нет доступа к закрытым элементам класса, хотя функция объявлена другом? Это сообщение отредактировал(а) yngwie19 - 4.10.2008, 09:46 |
||||
|
|||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
yngwie19, никаких ошибок не должно быть. Можешь кинуть весь код?
-------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
попробуй поставь using namespace std, реально ошибки сразу, VS 6.0
Это сообщение отредактировал(а) yngwie19 - 4.10.2008, 11:43 |
|||
|
||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
У меня VS 2005 , но и на 6.0 не должно дать ошибки(в универе пишу на 6.0, и все OK). ![]() Какие ошибки дает? -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(19) : error C2248: 'x' : cannot access private member declared in class 'T'
C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(12) : see declaration of 'x' C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(21) : error C2248: 'y' : cannot access private member declared in class 'T' C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(13) : see declaration of 'y' C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(26) : error C2248: 'x' : cannot access private member declared in class 'T' C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(12) : see declaration of 'x' C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(26) : error C2248: 'y' : cannot access private member declared in class 'T' C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(13) : see declaration of 'y' C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(31) : error C2593: 'operator >>' is ambiguous C:\Program Files\Microsoft Visual Studio\MyProjects\1\main.cpp(32) : error C2593: 'operator <<' is ambiguous Добавлено через 8 минут и 14 секунд а когда подключаю <iostream.h>, (без using namespace std естественно), то все работает, почему так? |
|||
|
||||
J0ker |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
не class clock а struct clock Добавлено через 8 минут и 57 секунд clock - это стандартная функция из time.h либо уберите свой класс clock в неймспейс либо используйте другое имя Добавлено через 10 минут и 12 секунд
потому, что не <iostream.h>, а просто <iostream> - это разные вещи Это сообщение отредактировал(а) J0ker - 4.10.2008, 20:32 |
||||
|
|||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
Это сообщение отредактировал(а) J0ker - 4.10.2008, 20:52 |
|||
|
||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
J0ker, а где здесь слово clock? не имеет значения, если функция дружественная. -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
предполагаю, что Joker сделал телепатическое заключение на основе этой строки : ну и как дополенение то, что кроме clock не объявлены никакие пользовательские классы (которые могут вызвать этот конфликт) ![]() |
|||
|
||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
урааааа. Загрузил последний Сервис-пак и все заработало, наверно был глюк VC
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |