Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
VR
 Аватар для vrvrvrvr1234
45 / 30 / 16
Регистрация: 18.07.2020
Сообщений: 114

Создание массива с объектами дочерних и родительского классов

25.03.2025, 16:29. Показов 2226. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Создаю небольшую программку, и в процессе появилась небольшая проблемка:
Есть 4 класса: родительский и 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
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
class Car {
    public:
    std::string brand;
    std::string model;
    int mileage;
    int consumption;
    int *coordinates;
    bool is_in_use;
    int days_in_use = 0;
    int price;
    Car() {};
    Car(std::string brandi, std::string modeli, int mileagei, int con, int lat, int lon, bool use, int days, int pricei) {
        brand = brandi;
        model=modeli;
        mileage = mileagei;
        consumption = con;
        coordinates[0]=lat;
        coordinates[1]=lon;
        is_in_use = use;
        days_in_use = days;
        price = pricei;
    }
    void avr_cos() {std::cout << "average: " << consumption/mileage << std::endl; }
};
class Heavy: public Car {
    public:
    int mass;
    void cmass() {std::cout<< "mass: " << mass << std::endl; }
    Heavy(std::string brandi, std::string modeli, int mileagei, int con, int lat, int lon, bool use, int days, int pricei, int mas) : Car(brandi, modeli, mileagei, con, lat, lon,use, days, pricei) {
        brand = brandi;
        model = modeli;
        mileage = mileagei;
        consumption = con;
        coordinates[0]=lat;
        coordinates[1]=lon;
        is_in_use = use;
        days_in_use = days;
        price = pricei;
        mass = mas;
    }
};
class Bus: public Car {
    public:
    int peoples_per_day;
    Bus(std::string brandi, std::string modeli, int mileagei, int con, int lat, int lon, bool use, int days, int pricei, int ppl) : Car(brandi, modeli, mileagei, con, lat, lon,use, days, pricei)  {
        brand = brandi;
        model=modeli;
        mileage = mileagei;
        consumption = con;
        coordinates[0]=lat;
        coordinates[1]=lon;
        is_in_use = use;
        days_in_use = days;
        price = pricei;
        peoples_per_day = ppl;
    }
};
class Light: public Car {
    public:
    Light(std::string brandi, std::string modeli, int mileagei, int con, int lat, int lon, bool use, int days, int pricei) : Car(brandi, modeli, mileagei, con, lat, lon,use, days, pricei)  {
        brand = brandi;
        model=modeli;
        mileage = mileagei;
        consumption = con;
        coordinates[0]=lat;
        coordinates[1]=lon;
        is_in_use = use;
        days_in_use = days;
        price = pricei;
    }
};
Нужно создать массив с объектами этих классов(без потери уникальных свойств/методов дочерних классов). Сколько бы я не вертелся с массивами и векторами, не получается создать этот массив. Как можно его реализовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2025, 16:29
Ответы с готовыми решениями:

Как сделать, чтобы производный класс наследовал все операторы от родительского класса и от родительского родительского
Есть 1й базовый класс в кот. определён operator ++ (); //prefix Есть производный от 1го, 2й класс в кот. дополнительно определён operator...

Передача объектов дочерних классов через массив объектов родительского класса в функцию
Здравствуйте. Возможно, вопрос больше относится к теории ООП, но все же я не решился задавать его в теме теории ООП, так как он кажется мне...

Закрытие дочерних окон при закрытии родительского - QT
Создал 2 окна. При клике на одну из кнопок открываю 2ую форму: Form *myform = new Form; myform-&gt;show(); Но...

3
Заблокирован
25.03.2025, 16:38
Цитата Сообщение от vrvrvrvr1234 Посмотреть сообщение
Нужно создать массив с объектами этих классов
Есть std::any.
Вопрос зачем?
100% вероятность, что вы делаете что то не так.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
25.03.2025, 17:01
Цитата Сообщение от vrvrvrvr1234 Посмотреть сообщение
Сколько бы я не вертелся с массивами и векторами, не получается создать этот массив.
Так а где код? Что именно "не получается"? О чем вопрос?

Цитата Сообщение от vrvrvrvr1234 Посмотреть сообщение
Нужно создать массив с объектами этих классов(без потери уникальных свойств/методов дочерних классов).
В С++ невозможно буквально создать массив с объектами разного типа. Все элементы массива всегда имеют один и тот же тип. Уточняйте, что именно нужно создать.
0
Модератор
Эксперт С++
 Аватар для zss
13765 / 10960 / 6489
Регистрация: 18.12.2011
Сообщений: 29,233
25.03.2025, 18:46
vrvrvrvr1234, похоже, Вам нужно создать не массив объектов,
а массив указателей на базовый класс Car,
а потом инициализировать их адресом производных классов Heavy и Bus
C++
1
2
3
4
5
const int MAX_CARS=100;
Car* cars[MAX_CARS];
cars[0]=new Car(.....);
cars[1]=new Heavy(.....);
cars[2]=new Bus(.....);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2025, 18:46
Помогаю со студенческими работами здесь

Доступ к полям родительского класса из дочерних, перегрузка методов
Добрый день, кратко опишу условия задания. Есть родительский класс пилот со своими атрибутами,имя\категория(необходимо реализовать вывод...

Создание общей функции,работающей с объектами обоих классов
Всем доброго времени суток!Требуется избавиться от дублирования кода в следующих функциях с помощью создания одной общей функции,...

ООП в C++: Вызов родительского конструктора с параметром при создании объекта дочернего класса
Здравствуйте! Столкнулся с такой проблемой: если есть родительский класс с конструктором, то при создании дочернего объекта от этого...

При создании объекта наследуемого класса не срабатывает конструктор родительского класса
Уважаемые, эксперты! Суть простая. 1. Есть базовый класс String. В нём массив фиксированной длины, которая задана константой SZ. При...

Как вызвать виртуальную функцию из дочернего класса, если она определена и вызывается в конструкторе РОДИТЕЛЬСКОГО класса?
Ну то есть так: есть родительский и дочерний класс, в родительском определен виртуальная функция и вызывается в его конструкторе (камень...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru