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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
#1

Не наследует данные базового класса - C++

07.04.2013, 15:19. Просмотров 330. Ответов 8
Метки нет (Все метки)

Не могу понять что не так,но есть предположение что дело в том что в классе circle поля имеют те же названия что и в базовом.
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
 
using namespace std;
 
class Shape{
public:
    void Get_info();
    virtual void Show();
    virtual void Delete();
    virtual void Rotate();
    virtual void Move();
    Shape(){center=0;angle=0;scale=0;}
    ~Shape();
private:
float center,angle,scale;
};
 
void Shape::Get_info(){
    cout<<"Заполните информацию о базовой фигуре\n";
    cin>>center>>angle>>scale;
}
 
void Shape::Show(){
    cout<<"Информация о базовой фигуре\n";
    cout<<"Координаты центра "<<center<<" Угол поворота "<<angle<<" Маштаб "<<scale<<endl;
}
 
void Shape::Delete(){
    center=0;angle=0;scale=0;
    system("CLS");
}
void Shape::Rotate(){
    cout<<"Введите угол поворота для базовой фигуры\n";
    cin>>angle;
    cout<<"Базованя фигу была повёрнута на "<<angle<<endl;
}
 
void Shape::Move(){
    float vector_x,vector_y;
    cout<<"Введите вектор для перемещения базовой фигуры\n";
    cin>>vector_x>>vector_y;
    cout<<"Базовая фигура была передвинута на вектор "<<vector_x<<" "<<vector_y<<endl;
}
 
Shape::~Shape(){
    cout<<"Деструктор Базовой фигуры\n";
}
 
class Circle:public Shape{
public:
    virtual void Show();
    virtual void Delete();
    virtual void Move();
    ~Circle();
private:
    float center,angle,scale;
};
 
void Circle::Show(){//нужно что бы этот метод получал данные которые мы уже ввели для базового класса.
    cout<<"\nИнформация о фигуре Круг\n";
    cout<<"Координаты центра "<<center<<" Угол поворота "<<angle<<" Маштаб "<<scale;
}
 
void Circle::Delete(){
    center=0;angle=0;scale=0;
    system("CLS");
}
 
void Circle::Move(){
    float vector_x,vector_y;
    cout<<"Введите вектор для перемещения фигуры Круг\n";
    cin>>vector_x>>vector_y;
    cout<<"Фигура Крут была передвинута на вектор "<<vector_x<<" "<<vector_y<<endl;
}
 
Circle::~Circle(){
    cout<<"Деструктор фигуры Круг\n";
}
 
int main(){
    setlocale(0,"");
    Shape obj1;
    Circle obj2;
    obj1.Get_info();
    obj1.Show();
    obj1.Rotate();
    obj1.Move();
    obj2.Show();//нужно что бы этот метод получал данные которые мы уже ввели для базового класса.
    obj2.Move();
    cout<<"После нажания Enter фигура будет очишенна с экранна\n";
    system("pause");
    obj2.Delete();
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2013, 15:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не наследует данные базового класса (C++):

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Перегрузка оператора >> для дочернего класса от базового виртуального класса - C++
Доброго вам времени суток! Программирую на С++ не давно, в связи с отсутствием должного времени на поиск ответа в глубинах учебников,...

Указатель на объект базового класса и адрес объекта производного класса - C++
Пример кода: class Class1 { public: Class1(int x) { j = new int; *j = x; } ~Class1() {delete j;}

Создание указателя типа базового класса на экземпляр производного класса - C++
Добрый день! Иногда видел коды, где создавался указатель типа базового класса на объект класса - наследника, для чего это может применяться?

Определить обработчик исключений на преобразование указателя базового класса на указатель производного класса - C++
Класс В является производным от класса А. Определить обработчик исключительной ситуации на преобразование указателя базового класса А на...

Как построить экземпляр дочернего класса на основе готового экземпляра базового класса? - C++
Если уже есть готовый объект базового класса. Могу я построить экземпляр дочернего на его основе, (напр., получив такой базовый объект...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.04.2013, 16:21 #2
Убрать поля center, angle, scale из Circle, а в базовом классе написать методы доступа к ним.
0
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
07.04.2013, 21:15  [ТС] #3
Tulosba, возвращает 0
поверьте данный код у себя
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <iostream>
 
using namespace std;
 
class Shape{
public:
    Shape(){center=0;angle=0;scale=0;}
    void Set_info();
    float Get_center();
    float Get_angle();
    float Get_scale();
    virtual void Show();
    virtual void Delete();
    virtual void Rotate();
    virtual void Move();
    ~Shape();
private:
float center,angle,scale;
float adjustable_angle;
};
 
void Shape::Set_info(){
    cout<<"Заполните информацию о базовой фигуре:Координаты центра,угол поворота,масштаб\n";
    cin>>center>>angle>>scale;
}
 
void Shape::Show(){
    cout<<"Информация о базовой фигуре\n";
    cout<<"Координаты центра "<<center<<" Угол поворота "<<angle<<" Маштаб "<<scale<<endl;
}
 
void Shape::Delete(){
    center=0;angle=0;scale=0;
    system("CLS");
}
 
void Shape::Rotate(){
    cout<<"Введите угол поворота для базовой фигуры\n";
    cin>>adjustable_angle;
    cout<<"Базованя фигу была повёрнута на "<<adjustable_angle<<endl;
}
 
void Shape::Move(){
    float vector_x,vector_y;
    cout<<"Введите вектор для перемещения базовой фигуры\n";
    cin>>vector_x>>vector_y;
    cout<<"Базовая фигура была передвинута на вектор "<<vector_x<<" "<<vector_y<<endl;
}
 
float Shape::Get_center(){
    return center;
}
 
float Shape::Get_angle(){
    angle=angle+adjustable_angle;
    return angle;
}
 
float Shape::Get_scale(){
    return scale;
}
 
Shape::~Shape(){
    cout<<"Деструктор Базовой фигуры\n";
}
 
class Circle:public Shape{
public:
    virtual void Show();
    virtual void Delete();
    virtual void Move();
    ~Circle();
};
 
void Circle::Show(){
    cout<<"\nИнформация о фигуре Круг\n";
    cout<<"Координаты центра "<<Shape::Get_center()<<" Угол поворота "<<Shape::Get_angle()<<" Маштаб "<<Shape::Get_scale()<<endl;
}
 
void Circle::Delete(){
    //center=0;angle=0;scale=0;
    system("CLS");
}
 
void Circle::Move(){
    float vector_x,vector_y;
    cout<<"Введите вектор для перемещения фигуры Круг\n";
    cin>>vector_x>>vector_y;
    cout<<"Фигура Крут была передвинута на вектор "<<vector_x<<" "<<vector_y<<endl;
}
 
Circle::~Circle(){
    cout<<"Деструктор фигуры Круг\n";
}
 
int main(){
    setlocale(0,"");
    Shape obj1;
    Circle obj2;
    obj1.Set_info();
    obj1.Show();
    obj1.Rotate();
    obj1.Move();
    obj2.Show();
    obj2.Move();
    cout<<"После нажатия Enter фигура будет очищена с экранна\n";
    system("pause");
    obj2.Delete();
    system("pause");
    return 0;
}
Добавлено через 4 часа 1 минуту
подскажите кто-то
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.04.2013, 21:25 #4
Vlad_, что проверить-то? Для проверок могу предложить сайт http://liveworkspace.org/
0
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
07.04.2013, 21:28  [ТС] #5
Tulosba, ну выдает тоже самое 0,подскажите просто что не так ещё?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
07.04.2013, 21:29 #6
всё так. а что надо то?
я бы вообще убрал строку 56 из твоего кода.
0
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
07.04.2013, 21:34  [ТС] #7
Kuzia domovenok, нужен базовый класс
от него класс Круг,в котором будут уже данные которые мы ввели в базовый+возможность их изменить.
а при отработке метода void Circle::Show() оно пишет что центр 0 угол поворота 0 масштаб 0
56 return angle?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
07.04.2013, 23:33 #8
C++
1
2
3
4
5
6
7
8
9
class Circle:public Shape{
public:
virtual void Show();
virtual void Delete();
virtual void Move();
~Circle();
private:
float center,angle,scale;//ЗАЧЕМ ТЫ ЭТО ТУТ НАПИСАЛ? Убери!
};
0
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
08.04.2013, 00:18  [ТС] #9
Kuzia domovenok, пожалуйста посмотрите код из поста №3 в этой теме,проблема осталась именно на неём
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2013, 00:18
Привет! Вот еще темы с ответами:

Реализовать оператор= для присваивания объекта класса-потомка объекту базового класса - C++
Есть два класса A и B, причем класс B является потомком A. Как реализовать следующее: obj_A = obj_B и obj_B = obj_A? Добавлено через 9...

Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса - C++
Помогите пожалуйста новичку! (мне). Я хочу создать динамически расширяющийся массив указателей на базовый абстрактный класс,...

Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса - C++
Всем привет. Есть условие задачи: Дан базовый класс Base у которого есть метод my_name, метод выводит сообщение This is Base class. От...

Вызов объектом базового класса функцию из производного класса! - C++
Как можно осуществить вызов или передачу значения в базовый класс для дальнейшего вычисления этого значения в производном классе. Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.04.2013, 00:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru