![]() |
|
Модераторы: bsa |
![]()
|
|
| Lotles |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
Зачем здесь friend
Это сообщение отредактировал(а) Lotles - 2.7.2010, 19:30 |
|||
|
||||
| RobinHoodPHD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 12.8.2007 Где: Русь Репутация: нет Всего: 2 |
Бинарная операция определяемая внутри класса должна иметь 1 параметр, при этом вызвавший ее объект считается первым параметром. А Вам видимо нужно перегрузить * на случай "число*Point" поэтому ее объявили дружественной (дружественным функциям должна передаваться ссылка на объект тк this ей не передается), чтобы можно было задать 2 параметра .
Как то так. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
если она объявлена внутри класса, то это автоматически метод класса, а раз так, то приватные поля уже доступны. Мне кажется что спецификатор забыли убрать, после того как реализацию функции перенесли внутрь класса. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
RobinHoodPHD
слишком сложно описал, это тоже самое, что и написать
не в этом случае
Это сообщение отредактировал(а) azesmcar - 2.7.2010, 13:43 |
||||||||
|
|||||||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
azesmcar, я думал для таких случаев используется спецификатор static. Вот жеж чудики авторы С++!
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Alexeis, причем тут static? Он нужен для создания статического метода, который надо вызывать Class::method(). А тут речь идет о глобальной функции.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
А как же тогда?
static для функции класса дает 1) namespace 2) доступ к private полям объекта. Что в этом случае нам дает friend 1) namespace 2) доступ к private полям объекта. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| RobinHoodPHD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 12.8.2007 Где: Русь Репутация: нет Всего: 2 |
Static дает доступ к private полям??? Oo Это что то новенькое
Static объявляет метод статическим, т.е. не требующим создания экземпляра самого объекта. К доступу к полям не имеет никакого отношения. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Ну я не буквоед, как там по стандарту не в курсе, но везде где использую статик функции класса, везде они мне разрешают лазить внутрь. И MSVC и C++ Builder и eVC. Добавлено через 1 минуту и 46 секунд RobinHoodPHD, имеется ввиду, есть доступ в случае если указатель на экземпляр передается в качестве параметра функции. Если указатель не передается, То безусловно что не к чему обращаться. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
это не static, но и не совсем эквивалент глобальной функции.
рассмотрим такой код
|
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
mes, исходя из этого
я подумал будто такая функция попадает область видимости класса. Это же каким нужно было быть Возможности спецификатора static по отношению к функциям в данном случае поглощают возможности friend (т.е. позволяет сделать все тоже + спрятать от глобальной видимости) . -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
да нет же.
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Все нормально, иначе бы пришлось делать извращения, чтобы реализовать операторы, первый аргумент которых не объект этого класса (например, методы вывода в поток). |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |