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

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

Восстановить пароль Регистрация
 
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
07.04.2013, 15:19     Не наследует данные базового класса #1
Не могу понять что не так,но есть предположение что дело в том что в классе 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.04.2013, 16:21     Не наследует данные базового класса #2
Убрать поля center, angle, scale из Circle, а в базовом классе написать методы доступа к ним.
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
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 минуту
подскажите кто-то
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.04.2013, 21:25     Не наследует данные базового класса #4
Vlad_, что проверить-то? Для проверок могу предложить сайт http://liveworkspace.org/
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
07.04.2013, 21:28  [ТС]     Не наследует данные базового класса #5
Tulosba, ну выдает тоже самое 0,подскажите просто что не так ещё?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.04.2013, 21:29     Не наследует данные базового класса #6
всё так. а что надо то?
я бы вообще убрал строку 56 из твоего кода.
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
07.04.2013, 21:34  [ТС]     Не наследует данные базового класса #7
Kuzia domovenok, нужен базовый класс
от него класс Круг,в котором будут уже данные которые мы ввели в базовый+возможность их изменить.
а при отработке метода void Circle::Show() оно пишет что центр 0 угол поворота 0 масштаб 0
56 return angle?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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;//ЗАЧЕМ ТЫ ЭТО ТУТ НАПИСАЛ? Убери!
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2013, 00:18     Не наследует данные базового класса
Еще ссылки по теме:

C++ Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса
Вызов конструктора базового класса из класса-наследника C++
Конструктор базового класса C++

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

Или воспользуйтесь поиском по форуму:
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
08.04.2013, 00:18  [ТС]     Не наследует данные базового класса #9
Kuzia domovenok, пожалуйста посмотрите код из поста №3 в этой теме,проблема осталась именно на неём
Yandex
Объявления
08.04.2013, 00:18     Не наследует данные базового класса
Ответ Создать тему
Опции темы

Текущее время: 13:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru