![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Как правильно пергрузить operator += относительно какой-нить стуктуры?
|
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
обычно есть объект которому присваивают значение, чтобы это сделать возвращают ссылку на этот обект,
class A{ .... int nVal; .... } //В реализации operator += return &nVal; -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
Гость_v_ez |
|
|||
Unregistered |
а в MSDN об этом между прочим написано....;)))
а вообще приблизительно так будет: struct A{ A(int m_nATmp){m_nA = m_nATmp;} void operator +=(A& m_rOb){m_nA += m_rOb.m_nA;} int m_nA; }; ну и его использование: A a1(5), a2(6); a1 += a2; //a1.m_nA станет равно 11 |
|||
|
||||
Yuri Burger |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.5.2004 Репутация: нет Всего: нет |
class A { ... A& operator+=(const A& rhs){...;return *this;} ... }; Ссылку возвращать нужно дабы твой тип вел себя подобно встроеным: для int разрешено делать a=(a+=10) |
|||
|
||||
Sined |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
Начну с традиционного а почему не?
так например typedef struct _struct { d_ata data; struct _struct &operator+=(struct _struct &b); }sd,*psd sd& sd::operator+=(sd& b) { d_ata+=b.d_ata; return *this; } Не знаю почему сложилось мнение, что структура не поддерживает this. Может по стандарту это и так, но и gcc и Borland и MCW все поддерживабт прекрасно. |
|||
|
||||
Yuri Burger |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.5.2004 Репутация: нет Всего: нет |
Вопрос культуры - классы на то и есть, что имеют поведение. Структуры исторически - это данные, организованные определенным образом. Хотя, в C++ struct означает class с public по дефолту, тобишь: struct A { ... }; идентично class A { public: ... }; Поэтому ничто не мешает делать так как ты показал, но это будет дурной тон ;) Да, еще у тебя объявление архаическое ;) зачем тебе typedef там? И еще, принимать должно const& |
|||
|
||||
Sined |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
Привык.
Осталось только застрелиться. ![]() |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |