![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Подтвердите свой е-майл
Регистрация: 13.06.2010
Сообщений: 39
|
![]()
Здравствуйте. Скажите пожалуйста,правильно ли созданы и работают friend-функции.
Этот код нужно было изменить,так,чтобы все перегруженные операции были реализованы дружественными функциями. Код:
Подскажите пожалуйста,правильно ли я сделал? Код:
|
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 06.06.2010
Сообщений: 42
|
![]()
Скажите, с какой целью вы объявили дружественным классу один из методов этого класса? Я говорю о том методе, где вы производите перегрузку оператора *. По мойму в этом нет смысла. Кроме того AFAIK дружественные функции должны быть определены вне класса как обычные функции; то есть определение функции:
Time operator*(double m, const Time & t) { return t * m; } нужно вынести из класса, оставив в нем только объявление дружественной функции: friend Time operator*(double m, const Time & t); Кроме того, функция перегрузки оператора с такой сигнатурой (она принимает два параметра) AFAIK должна быть по любому определена как обычная функция, а не метод класса. Метод класса перегружающий этот оператор должен принимать только один параметр. Последний раз редактировалось Oleg_SK; 17.07.2010 в 03:01. |
![]() |
![]() |
![]() |
#3 | |
Подтвердите свой е-майл
Регистрация: 13.06.2010
Сообщений: 39
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 06.06.2010
Сообщений: 42
|
![]()
Aleksandr_Yanov
Похоже, что дружественные функции так все таки можно определять (в теле класса); по крайней мере компилятор не ругается и она вызывается. По этому похоже, что можно оставить код как есть; но я первый раз такое вижу. В общем, все сказанное мной в предыдущем посте можно проигнорировать (я думал, что такой код не будет работать). |
![]() |
![]() |
![]() |
#5 |
Подтвердите свой е-майл
Регистрация: 13.06.2010
Сообщений: 39
|
![]()
Вы бы как реализовали данный пример?
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 06.06.2010
Сообщений: 42
|
![]()
Максимально похожим на исходный код; вы похоже так и сделали.
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 06.06.2010
Сообщений: 42
|
![]()
Единственное, что пока заметил: почему вы не вынесли
Time operator*(double m) const; в дружественную функцию Time operator*(time t, double m) тогда бы у вас было две дружественные функции, перегружающие оператор *: Код:
Код:
Последний раз редактировалось Oleg_SK; 17.07.2010 в 04:53. |
![]() |
![]() |
![]() |
#8 |
Подтвердите свой е-майл
Регистрация: 13.06.2010
Сообщений: 39
|
![]()
Вы имеете ввиду что нужно было изначально сделать так:
friend Time operator-(int p_hour, int p_minutes, const Time & t) { ... } friend Time operator+(int p_hour, int p_minutes, const Time & t) { ... } Но тогда под таких друзей нужно будет переписывать и функции члены класса Time operator+(),operator-()... Или я Вас не правильно понимаю? |
![]() |
![]() |
![]() |
#9 |
Подтвердите свой е-майл
Регистрация: 13.06.2010
Сообщений: 39
|
![]()
Для каждого оператора судя по всему можно создать дублирующие их дружественные функции.Или я не прав,поправьте.
Код:
Последний раз редактировалось Aleksandr_Yanov; 17.07.2010 в 04:46. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 06.06.2010
Сообщений: 42
|
![]()
Aleksandr_Yanov
Перечитайте мой предыдущий пост, т.к. я его недавно отредактировал. Я всего лишь предлагаю убрать из кода объявление и определение метода класса Time перегружающего оператор * (их всего два варианта, а у вас в дружественную функцию вынесен только один из них), заменив его на дружественную функцию; вы все сделали кроме этого... Последний раз редактировалось Oleg_SK; 17.07.2010 в 04:51. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм Кнута-Морриса-Пратта или Рабина-Карпа (язык С++). Может у кого-нибудь есть готовый рабочий ? | Беата | Помощь студентам | 7 | 27.03.2010 10:50 |
Нужно положить готовый дизайн на готовый сайт! | Full87 | Фриланс | 1 | 16.12.2009 16:18 |