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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

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

04.01.2013, 08:47. Просмотров 319. Ответов 6
Метки нет (Все метки)

Для енама нельзя перегружать операторы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2013, 08:47     Для енама нельзя перегружать операторы?
Посмотрите здесь:
какие операторы нельзя перегружать? C++
C++ Как правильно перегружать операторы?
C++ Как же все-таки лучше всего перегружать операторы?
C++ Почему перегруженные операторы ввода/вывода нельзя сделать членами класса?
Как перегружать оператор -> ? C++
C++ как правильно перегружать оператор?
C++ Как правильно перегружать унарный минус?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
04.01.2013, 08:52     Для енама нельзя перегружать операторы? #2
А взять компилятор, да попробовать?
Можно. Правда, смысл данных действий мне решительно не ясен.
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
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
04.01.2013, 08:58     Для енама нельзя перегружать операторы? #4
Бросаются в глаза две вещи:
1. Почему возвращается ссылка? Оператор выглядит как свободная функция, рискну предположить, что в ней создается локальный объект.
2. Возвращает TParseXSMResult, принимает ParseXSMResult - это нормально?

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

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru