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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переопределение оператора += 
V
    Опции темы
oshilan
Дата 28.9.2011, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Сообственно, вопрос выражен в нижеприведённом тексте программы:
Код
class A
{ int x;
  int y;
};

class B
{ A& operator+=(const A& aA);
  //как реализовать ...
};

void main()
{ A a1;
  a1.x=25;
  a1.y=27;

  A a2;
  a2.x=5;
  a2.y=4;

  a1+=a2;
  //... чтоб после выполнения оператора += было: a1.x=30, a1.y=31,а a2.x и a2.y осталось прежним???
}

PM MAIL   Вверх
borisbn
Дата 28.9.2011, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



oshilan, ни разу не понял, при чём здесь class B  smile 
этот оператор должен быть либо отдельной функцией, либо описан в классе A.

Цитата(oshilan @  28.9.2011,  16:51 Найти цитируемый пост)
class A
{ int x;
  int y;
};

при таком описании x и y будут недоступны, т.к. по-умолчанию в классе они private

Короче говоря, должно быть как-то так
Код

struct A {
  int x;
  int y;

  A& operator +=( const A & other ) {
      x += other.x;
      y += other.y;
      return *this;
  }
};

void main()
{
  A a1;
  a1.x=25;
  a1.y=27;

  A a2;
  a2.x=5;
  a2.y=4;

  a1+=a2;
}


Это сообщение отредактировал(а) borisbn - 28.9.2011, 17:06


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
oshilan
Дата 28.9.2011, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



borisbn, да, спасибо! Ну мне нужно, чтоб это было именно в другом классе. Ну а поля класса А - паблики, забыл.
PM MAIL   Вверх
math64
Дата 28.9.2011, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Можно и в B
Код

class B {
public:
B& operator+=(const class A&a) {
myA += a;
return *this;
}
private:
A myA;
};
:
PM   Вверх
oshilan
Дата 28.9.2011, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хотя задание звучит так: "создать новый класс и определить оператор += для накопления существующих объектов"...
Получается, что в новом классе нужно просто сделать список объектов класса А да и всё... А так как список является собственностью нового класса, то никаких проблем с доступом не возникнет. От я петя,  не разобрался в задании.
borisbn, спасибо ещё раз! smile
math64, спасибо! ))

Это сообщение отредактировал(а) oshilan - 28.9.2011, 17:21
PM MAIL   Вверх
borisbn
Дата 28.9.2011, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



oshilan, http://liveworkspace.org/code/38024d31d5ef...e156105a9155743
smile

Это сообщение отредактировал(а) borisbn - 28.9.2011, 18:24


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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