| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > дружественные функции |
| Автор: pycha 10.7.2008, 20:09 | ||||||
Драсте. У меня тут возникли непонятки с созданием дружественной функции. Вот есть клас:
Мне нужно перегруженые операторы реализовать в виде дружественных функций. Исходя с того что я знаю я написал вот так:
Вот сами функции:
Вот ошибки: g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\m.h(16) : error C2270: '+' : modifiers not allowed on nonmember functions g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\m.h(17) : error C2270: '-' : modifiers not allowed on nonmember functions g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\m.h(18) : error C2270: '*' : modifiers not allowed on nonmember functions g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\11.1.cpp(29) : error C2270: '+' : modifiers not allowed on nonmember functions g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\11.1.cpp(37) : error C2270: '-' : modifiers not allowed on nonmember functions g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\11.1.cpp(47) : error C2270: '*' : modifiers not allowed on nonmember functions g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\11.1.cpp(49) : warning C4244: 'initializing' : conversion from 'double' to 'long', possible loss of data menu.cpp g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\m.h(16) : error C2270: '+' : modifiers not allowed on nonmember functions g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\m.h(17) : error C2270: '-' : modifiers not allowed on nonmember functions g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\11.1\11.1\m.h(18) : error C2270: '*' : modifiers not allowed on nonmember functions Generating Code... Build log was saved at "file://g:\Documents and Settings\pycha.PYCHA-1366613\Мои документы\Visual Studio 2008\Projects\11.1\11.1\Debug\BuildLog.htm" 11.1 - 9 error(s), 1 warning(s) Что тут не так: ведь вроде обьявил правильно. |
| Автор: Void 10.7.2008, 20:17 | ||
Убрать const с объявлений операторов, это не методы класса и смысла он не имеет. |
| Автор: pycha 11.7.2008, 00:04 |
| да действительно заработало. Я думал что const будет давать гарантию что не будет изминений в передаваемых класах. Не думал что в таких случаях они будут лишние... |
| Автор: bsa 11.7.2008, 09:59 |
| pycha, модификатор const в конце метода нужен чтобы показать, что метод не меняет класс, так как никак иначе это указать нельзя. Просто каждому нестатическому методу первым параметром неявно передается указатель на объект класса. Вот const и относится к нему. Когда ты пишешь не методы, то ты можешь легко сам вручную указать что у тебя указывает на константу, а что нет. |
| Автор: pycha 12.7.2008, 11:08 |
| теперь понятно |