Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно пергрузить operator +=, мозги пухнут:) 
:(
    Опции темы
bel_nikita
Дата 19.5.2004, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Как правильно пергрузить operator += относительно какой-нить стуктуры?


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Royan
Дата 19.5.2004, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



обычно есть объект которому присваивают значение, чтобы это сделать возвращают ссылку на этот обект,

class A{
....
int nVal;
....
}

//В реализации operator +=
return &nVal;


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Гость_v_ez
Дата 19.5.2004, 10:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.5.2004, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.5.2004

Репутация: нет
Всего: нет



Цитата(bel_nikita @ 19.5.2004, 10:23)
Как правильно пергрузить operator += относительно какой-нить стуктуры?

class A
{
...
A& operator+=(const A& rhs){...;return *this;}
...
};

Ссылку возвращать нужно дабы твой тип вел себя подобно встроеным:

для int разрешено делать a=(a+=10)

PM MAIL   Вверх
Sined
Дата 19.5.2004, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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 все поддерживабт прекрасно.

PM MAIL   Вверх
Yuri Burger
Дата 20.5.2004, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.5.2004

Репутация: нет
Всего: нет



Цитата(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 все поддерживабт прекрасно.

Вопрос культуры - классы на то и есть, что имеют поведение. Структуры исторически - это данные, организованные определенным образом.

Хотя, в C++ struct означает class с public по дефолту, тобишь:

struct A
{
...
};

идентично

class A
{
public:
...
};

Поэтому ничто не мешает делать так как ты показал, но это будет дурной тон ;)

Да, еще у тебя объявление архаическое ;) зачем тебе typedef там?

И еще, принимать должно const&
PM MAIL   Вверх
Sined
Дата 20.5.2004, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 19.5.2004

Репутация: 1
Всего: 0



Цитата
Да, еще у тебя объявление архаическое ;) зачем тебе typedef там?

Привык.
Цитата
И еще, принимать должно const&

Осталось только застрелиться. rolleyes.gif

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1103 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.