Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 21:56   #1
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию Перегруженная дружественная функция

Всем привет.

Ранее использовал перегруженные операции как методы класса, а теперь хочу потренироваться, объявив перегруженные операции как дружественные. При перегрузке операции= компилятор выдает ошибку

Код:
void operator= ( Rational &x, const Rational &y)
	
{
	x.chislitel=y.chislitel;
	x.znamenatel=y.znamenatel;
}
Код:
Ошибка: 	8	IntelliSense: 'operator=' must be a member function	c:\users\андрей\documents\visual studio 2010\projects\sun\sun\rational.cpp	110
Не могу понять, в чем причина.
Заранее спасибо.
Желание тысяча возможностей, нежелание - тысяча причин

Последний раз редактировалось Стремящийся; 06.05.2012 в 21:57. Причина: Забыл поставить тэг #
Стремящийся вне форума Ответить с цитированием
Старый 06.05.2012, 22:28   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

Переведите, что вам написали - там все четко.
p51x вне форума Ответить с цитированием
Старый 06.05.2012, 22:32   #3
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Спасибо, но там указано, что функция должна быть членом класса, а я хочу чтобы была другом. С перегрузкой операции + у меня получилось, а вот с = нет. Эта операция может быть вне класса.
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 06.05.2012, 22:41   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Эта операция может быть вне класса.
нет............
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.05.2012, 22:59   #5
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Код:
// вообще нельзя перегрузить
.  
.*  
:: 
? : 

// только как нестатические члены класса
 =
->
[]
()
EUGY вне форума Ответить с цитированием
Старый 06.05.2012, 23:36   #6
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
// только как нестатические члены класса
=
->
[]
()
->* тоже, наверное, только как нестатический член
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 06.05.2012, 23:42   #7
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
->* тоже, наверное, только как нестатический член
неа ... прокатит вне класса.

Хм. навскидку и придумать не могу, для чего он (->*) может пригодиться.
А гуглить лень.

Последний раз редактировалось EUGY; 06.05.2012 в 23:53.
EUGY вне форума Ответить с цитированием
Старый 07.05.2012, 04:36   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

ну и еще 5 копеек, операторы приведения
p51x вне форума Ответить с цитированием
Старый 07.05.2012, 09:08   #9
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Спасибо большое всем!
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегруженная операция != Стремящийся Общие вопросы C/C++ 2 27.03.2012 11:43
дружественная функция нона Помощь студентам 2 06.12.2011 23:02
Функция Seferus Общие вопросы C/C++ 3 23.09.2010 02:08
Функция NeosPasha Помощь студентам 0 25.01.2010 13:01
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50