Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
#1

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

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

Для енама нельзя перегружать операторы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2013, 08:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Для енама нельзя перегружать операторы? (C++):

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

Как правильно перегружать операторы? - C++
Добрый день. Более-менее освоил Си, и вроде бы неплохо в нем разбираюсь. Решил взяться за плюсы. Помогите разобраться с перегрузкой...

Как же все-таки лучше всего перегружать операторы? - C++
1. Нужно ли использовать friend там, где это возможно? (или не стоит злоупотреблять где-нибудь?) 2. Стоит ли при перегрузке бинарного...

Зачем перегружать операторы "++", "<<", ">>" и что они дают? - C++
Здравствуйте. Я хотел спросить зачем перегружать оператор &quot;++&quot;, &quot;&lt;&lt;&quot;, &quot;&gt;&gt;&quot; и что они нам дают?

Почему перегруженные операторы ввода/вывода нельзя сделать членами класса? - C++
Добрый вечер, Решаю домашнее задание, и вот вопрос возник. Создал класс и перегрузил ввода/вывод. Но не нашел информации почему...

С++.Операторы в С++: условные операторы, операторы break и continue - C++
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном ответе найти точки пересечения.

6
0x10
2483 / 1658 / 249
Регистрация: 24.11.2012
Сообщений: 4,132
04.01.2013, 08:52 #2
А взять компилятор, да попробовать?
Можно. Правда, смысл данных действий мне решительно не ясен.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
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 Посмотреть сообщение
А взять компилятор, да попробовать?
Так потому и спрашиваю.
0
0x10
2483 / 1658 / 249
Регистрация: 24.11.2012
Сообщений: 4,132
04.01.2013, 08:58 #4
Бросаются в глаза две вещи:
1. Почему возвращается ссылка? Оператор выглядит как свободная функция, рискну предположить, что в ней создается локальный объект.
2. Возвращает TParseXSMResult, принимает ParseXSMResult - это нормально?

Upd: тьфу, оператор же |=. Сейчас посмотрю внимательнее.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
04.01.2013, 09:01  [ТС] #5
Цитата Сообщение от 0x10 Посмотреть сообщение
Возвращает TParseXSMResult, принимает ParseXSMResult - это нормально?
Конечно. А разве комбинированное присваивание может вести себя иначе?
Цитата Сообщение от 0x10 Посмотреть сообщение
рискну предположить, что в ней создается локальный объект.
Где у меня какой то временный объект? Я возвращаю параметр по состоянию на ретон.
0
0x10
2483 / 1658 / 249
Регистрация: 24.11.2012
Сообщений: 4,132
04.01.2013, 09:05 #6
По пункту 1 я прогнал, да.
По второму - я вообще не вижу, чтобы тип ParseXSMResult был где-то объявлен, компилятор говорит о том же.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
04.01.2013, 09:07  [ТС] #7
Прогнал, пропущена T.
0
04.01.2013, 09:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2013, 09:07
Привет! Вот еще темы с ответами:

Как перегружать оператор -> ? - C++
Доброго времени суток. Есть класс: template&lt;class T&gt; class Auto_ptr { public: Auto_ptr(T* p) : pointer(p) { } ~Auto_ptr() {...

как правильно перегружать оператор? - C++
Есть такой класс. class LampaO { private: int svet; int job; int pro; public: LampaO(int voltage=220); int IfJob();

Как правильно перегружать унарный минус? - C++
Дайте правильный прототип перегрузки унарного минуса.

Перегружать операции можно только в пределах какого-то класса? - C++
То есть я не могу просто так взять и написать перегрузку операции вне класса для обычных типов Допустим хочу перегрузить операцию...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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