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

Сложение экземпляра базового класса и экземпляра наследника - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Где бы записать 60! ? http://www.cyberforum.ru/cpp-beginners/thread274654.html
У меня стоит задача вычислить уравнение: P (a, b) = a! / (a-b)! Где "а" равно 60, а "b" равно 3 Есть какой то тип, где бы вместить 60! ?
C++ блок-схемы!!!! кто может помочь с составлением блок-схем отзовитесь http://www.cyberforum.ru/cpp-beginners/thread274653.html
Вывести на экран таблицу значения функции C++
Цель: формирование практических навыков выбора и использования операторов цикла языка С++. Постановка задачи. Решить указанные в варианте задачи, используя основные операторы языка С++. При...
C++ Дано множество точек. Найти медиану.
Учусь на первом курсе. Получил вот такое задание:"Медианой множества, состоящего из четного числа точек на плоскости, называется прямая, соединяющая любые две точки множества, по обе стороны от...
C++ Шарик, летающий по экрану и ударяющийся об его стенки http://www.cyberforum.ru/cpp-beginners/thread274646.html
Тут такая тема: срочно нужна помощь в создании задания на С++. С помощью графического редактора С++ необходимо создать программу в которой будет следующее: шарик летающий по экрану и ударяющийся о...
C++ Программирование разветвляющихся алгоритмов Программирование разветвляющихся алгоритмов подробнее

Показать сообщение отдельно
Red Planet
49 / 10 / 2
Регистрация: 20.09.2009
Сообщений: 263

Сложение экземпляра базового класса и экземпляра наследника - C++

11.04.2011, 23:15. Просмотров 2240. Ответов 29
Метки (Все метки)

Добрый вечер! Моя задача - сложить экземпляр базового класса и наследника. Нужно сделать так, чтобы результат сложения "знал" операнда-наследника (для того и сделан в нем указатель prev). Может быть, лучше это сделать по-другому? Если да, то как? Если нет, то скажите, что дописать в операторах?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
class A {
 protected: double x, y;
 public: A () {x=1; y=1;}
 double get_x () {return x;}
 double get_y () {return y;}
};
 
class B:public A {
 B *prev;
 public: B () {prev=0;}
 B (const B &);
 ~B () {delete prev;}
 B& operator = (const A &);
 B& operator = (const B &);
 friend ostream& operator << (ostream &, const B &);
 friend B operator + (B, A);
};
 
 
// Копирующий конструктор наследника.
B::B (const B &right) {
 prev=0;
 x=right.x;
 y=right.y;
}
 
 
// Присваивание экземпляру наследника экземпляра родителя.
B& B::operator =(const A &right) {
 x=right.get_x();
 y=right.get_y();
 return *this;
}
 
 
// Присваивание наследнику наследника.
B& B::operator = (const A &right) {
 if (this!=&right) {
  delete prev;
  prev=0;
  x=right.x;
  y=right.y;
 }
 
 return *this;
}
 
 
// Операция сложения родителя и наследника.
B operator + (B left, A right) {
 method_with_prev res;
 res.c = left.c + right.get_c();
 res.d = left.d + right.get_d();
 res.prev = &left; // Думал, что так решается, но не уверен.
 return res;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru