Форум программистов, компьютерный форум CyberForum.ru

Для енама нельзя перегружать операторы? - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.01.2013, 08:47     Для енама нельзя перегружать операторы? #1
Для енама нельзя перегружать операторы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
04.01.2013, 08:52     Для енама нельзя перегружать операторы? #2
А взять компилятор, да попробовать?
Можно. Правда, смысл данных действий мне решительно не ясен.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.01.2013, 08:52  [ТС]     Для енама нельзя перегружать операторы? #3
Как?
C++
1
2
3
4
5
6
enum TParseXSMResult {TPXSMRNoError         =0x00,
                      TPXSMREmptyBuffer     =0x01,
                      TPXSMRNoXSMTag        =0x02,
                      TPXSMRNoVersionTag    =0x04,
                      TPXSMRsupportedVersion=0x08,
                      TPXSMRParseError      =0x10};
C++
1
2
TParseXSMResult            &operator|= (ParseXSMResult  &Left      ,
                                        ParseXSMResult  &Rigt      )
, пишет
C:\tsserver\Projects\cpp\codeblocks\xsm\xsm.hpp|90|error: declaration of 'operator|=' as non-function|
C:\tsserver\Projects\cpp\codeblocks\xsm\xsm.hpp|90|error: 'ParseXSMResult' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\xsm\xsm.hpp|90|error: 'Left' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\xsm\xsm.hpp|91|error: 'ParseXSMResult' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\xsm\xsm.hpp|91|error: 'Rigt' was not declared in this scope|
||=== Build finished: 5 errors, 0 warnings ===|
Цитата Сообщение от 0x10 Посмотреть сообщение
А взять компилятор, да попробовать?
Так потому и спрашиваю.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
04.01.2013, 08:58     Для енама нельзя перегружать операторы? #4
Бросаются в глаза две вещи:
1. Почему возвращается ссылка? Оператор выглядит как свободная функция, рискну предположить, что в ней создается локальный объект.
2. Возвращает TParseXSMResult, принимает ParseXSMResult - это нормально?

Upd: тьфу, оператор же |=. Сейчас посмотрю внимательнее.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.01.2013, 09:01  [ТС]     Для енама нельзя перегружать операторы? #5
Цитата Сообщение от 0x10 Посмотреть сообщение
Возвращает TParseXSMResult, принимает ParseXSMResult - это нормально?
Конечно. А разве комбинированное присваивание может вести себя иначе?
Цитата Сообщение от 0x10 Посмотреть сообщение
рискну предположить, что в ней создается локальный объект.
Где у меня какой то временный объект? Я возвращаю параметр по состоянию на ретон.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
04.01.2013, 09:05     Для енама нельзя перегружать операторы? #6
По пункту 1 я прогнал, да.
По второму - я вообще не вижу, чтобы тип ParseXSMResult был где-то объявлен, компилятор говорит о том же.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2013, 09:07     Для енама нельзя перегружать операторы?
Еще ссылки по теме:

Как перегружать оператор -> ? C++
C++ Как же все-таки лучше всего перегружать операторы?
С++.Операторы в С++: условные операторы, операторы break и continue C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.01.2013, 09:07  [ТС]     Для енама нельзя перегружать операторы? #7
Прогнал, пропущена T.
Yandex
Объявления
04.01.2013, 09:07     Для енама нельзя перегружать операторы?
Ответ Создать тему
Опции темы

Текущее время: 18:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru