Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Pavel Rem
11 / 11 / 2
Регистрация: 15.07.2016
Сообщений: 124
#1

Как создать массив из объектов разных классов, имеющих общего предка? - C++

16.02.2017, 19:46. Просмотров 570. Ответов 4
Метки нет (Все метки)

Есть основной класc 'Автомобиль' его наследуют 3 класса: мини вен, купе и седан.
Как создать массив объектов класса 'автомобиль' что бы он включал в себя объекты классов мини вен, купе и седан?
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
class car
{
private:
    int _t;
public:
    car() {}
    car(int t):_t(t){}
};
 
class miniven : car
{
private:
    int _t;
public:
    miniven() {}
    miniven(int t) :_t(t) {}
};
 
class sedan : car
{
private:
    int _t;
public:
    sedan() {}
    sedan(int t) :_t(t) {}
};
 
class kupe: car
{
private:
    int _t;
public:
    kupe() {}
    kupe(int t) :_t(t) {}
};
 
void main()
{
    car arr[3];
    arr[0] = kupe(5);
    arr[1] = sedan(6);
    arr[2] = miniven(2);
}

http://www.cyberforum.ru/cpp-beginners/thread2240769.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2017, 19:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как создать массив из объектов разных классов, имеющих общего предка? (C++):

Как создать двумерный массив объектов классов?
Здравствуйте уважаемые форумчане :) Не знаю как заполнить массив чанками,...

Массив объектов разных производных классов
Задача такая: базовый класс - фигура, производные классы - круг, треугольник и...

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов...

Взаимодействие объектов разных классов
Я или туплю или чего-то не понимаю\не до понимаю. Вопрос в самом коде. class...

Вектор объектов разных классов. Полиморфим
В общем проблема такая: есть вектор объектов разных классов, надо вывести...

4
nd2
2828 / 2398 / 1052
Регистрация: 29.01.2016
Сообщений: 8,022
16.02.2017, 19:54 #2
Цитата Сообщение от Pavel Rem Посмотреть сообщение
C++
1
2
3
4
    car arr[3];
    arr[0] = kupe(5);
    arr[1] = sedan(6);
    arr[2] = miniven(2);
C++
1
2
3
4
    car* arr[3];
    arr[0] = new kupe(5);
    arr[1] = new sedan(6);
    arr[2] = new miniven(2);
1
Pavel Rem
11 / 11 / 2
Регистрация: 15.07.2016
Сообщений: 124
16.02.2017, 20:00  [ТС] #3
Цитата Сообщение от nd2 Посмотреть сообщение
C++
1
2
3
4
car* arr[3];
arr[0] = new kupe(5);
arr[1] = new sedan(6);
arr[2] = new miniven(2);
не сработает, типы автомобилей наследуют автомобиль а не на оборот
0
nd2
2828 / 2398 / 1052
Регистрация: 29.01.2016
Сообщений: 8,022
16.02.2017, 20:07 #4
Лучший ответ Сообщение было отмечено Pavel Rem как решение

Решение

Цитата Сообщение от Pavel Rem Посмотреть сообщение
не сработает, типы автомобилей наследуют автомобиль а не на оборот
Понятно, что не наоборот. Указатель базового класса может ссылаться на объект производного. Всё работает. Сделай публичное наследование.
1
nd2
2828 / 2398 / 1052
Регистрация: 29.01.2016
Сообщений: 8,022
16.02.2017, 20:20 #5
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
#include <iostream>
 
class car
{
private:
    int _t;
public:
    car() {}
    car(int t):_t(t){}
    virtual void show() = 0;
};
 
class miniven : public car
{
private:
    int _t;
public:
    miniven() {}
    miniven(int t) :_t(t) {}
    virtual void show()
    {std::cout << "miniven" << std::endl;}
};
 
class sedan : public car
{
private:
    int _t;
public:
    sedan() {}
    sedan(int t) :_t(t) {}
    virtual void show()
    {std::cout << "sedan" << std::endl;}
};
 
class kupe: public car
{
private:
    int _t;
public:
    kupe() {}
    kupe(int t) :_t(t) {}
    virtual void show()
    {std::cout << "kupe" << std::endl;}
};
 
int main()
{
    car* arr[3];
    arr[0] = new kupe(5);
    arr[1] = new sedan(6);
    arr[2] = new miniven(2);
 
    for (int i = 0; i < 3; ++i)
        arr[i] ->show();
 
    system("pause");
    return 0;
}
1
Миниатюры
Как создать массив из объектов разных классов, имеющих общего предка?  
16.02.2017, 20:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2017, 20:20
Привет! Вот еще темы с решениями:

Создание коллекции объектов разных классов
Здравствуйте. Помогите, пожалуйста, с задачкой создания коллекции объектов...

Запись и чтение объектов разных классов в один файл
Здравствуйте. Изучаю С++ по Лафоре. Дошёл до места, где объясняется, как...

Вектор объектов разных классов. Доступ к свойствам элемента вектора
есть базовый класс class A { //... } есть производные классы class A1 :...

Как создать массив объектов?
Только создать нужно не с конструктором по умолчанию, а с через конструктор с...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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