Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Как правильно пергрузить operator += |
Автор: bel_nikita 19.5.2004, 10:23 |
Как правильно пергрузить operator += относительно какой-нить стуктуры? |
Автор: Royan 19.5.2004, 10:36 |
обычно есть объект которому присваивают значение, чтобы это сделать возвращают ссылку на этот обект, class A{ .... int nVal; .... } //В реализации operator += return &nVal; |
Автор: Гость_v_ez 19.5.2004, 10:37 |
а в 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.5.2004, 13:52 | ||
class A { ... A& operator+=(const A& rhs){...;return *this;} ... }; Ссылку возвращать нужно дабы твой тип вел себя подобно встроеным: для int разрешено делать a=(a+=10) |
Автор: Sined 19.5.2004, 19:28 |
Начну с традиционного а почему не? так например 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 20.5.2004, 10:23 | ||
Вопрос культуры - классы на то и есть, что имеют поведение. Структуры исторически - это данные, организованные определенным образом. Хотя, в C++ struct означает class с public по дефолту, тобишь: struct A { ... }; идентично class A { public: ... }; Поэтому ничто не мешает делать так как ты показал, но это будет дурной тон ;) Да, еще у тебя объявление архаическое ;) зачем тебе typedef там? И еще, принимать должно const& |
Автор: Sined 20.5.2004, 10:30 | ||||
Привык.
Осталось только застрелиться. ![]() |