2 / 2 / 0
Регистрация: 14.02.2021
Сообщений: 27
|
||||||
1 | ||||||
Как поместить в один список объекты классов, наследующие несколько классов08.11.2021, 16:38. Показов 914. Ответов 7
Здравствуйте! В моей программе такая иерархия:
Базовый класс Transport, его наследники это Car, Train и Plane Есть ещё один базовый класс, TypeOfTransport, от которого наследуются классы CargoType и Passenger Type После чего я создаю классы CargoTrain : Train, CargoType и PassengerTrain : Train, PassengerType Я бы хотел поместить оба эти объекта в один и тот же список (Я использую односвязный список на основе указателей, запрещено использовать STL). Узел выглядит так:
Возможно ли это сделать?
0
|
08.11.2021, 16:38 | |
Ответы с готовыми решениями:
7
Разработать иерархию классов и поместить в список объекты разных классов Как создать класс контейнер-динамический массив и поместить туда объекты других классов? Как в один вектор поместить много классов? Как записать файл объекты разных классов, чтобы при их считывании с файла сохранялись характеристики объектов классов |
Заблокирован
|
|
08.11.2021, 16:51 | 2 |
Именно для этого и придумали ООП.
Список должен состоять из элементов базового типа. А добавлять ты в него будешь таки экземпляры наследников. Оперируя членами класса-предка ты будешь работать именно с их реализацией в наследнике. Это называется полиморфизм. З.Ы. Сорри за терминологию, я в С++ не шарю, поэтому могу неправильно подобрать нужные термины.
0
|
фрилансер
5493 / 5090 / 1046
Регистрация: 11.10.2019
Сообщений: 13,314
|
||||||
08.11.2021, 16:56 | 3 | |||||
Сообщение было отмечено Vladimirx17 как решение
Решение
Vladimirx17, так ?
0
|
2 / 2 / 0
Регистрация: 14.02.2021
Сообщений: 27
|
|
08.11.2021, 16:58 [ТС] | 4 |
0
|
фрилансер
5493 / 5090 / 1046
Регистрация: 11.10.2019
Сообщений: 13,314
|
|
08.11.2021, 17:00 | 5 |
но, мне кажется, лучше не наследоваться дополнительно от CargoType и PassengerType, а сделать их полями соответствующих классов
Добавлено через 1 минуту Vladimirx17, всегда можно сделать самый-пресамый базовый класс, затем его использовать в массиве
1
|
2 / 2 / 0
Регистрация: 14.02.2021
Сообщений: 27
|
|
08.11.2021, 17:09 [ТС] | 6 |
Да вот ошибку даёт, мол, 'Transport' is an inaccessible base of 'CargoTrain'
Соответственно, переменная типа Transport* не хочет принимать в себя адрес экземпляра класса CargoTrain, который наследуется как от Train, так и от CargoType Добавлено через 1 минуту Просто, в ВУЗе такое дали задание и в нём подразумевается именно такая иерархия. Видимо, в случае такой иерархии объекты в список просто не стоит помещать
0
|
фрилансер
5493 / 5090 / 1046
Регистрация: 11.10.2019
Сообщений: 13,314
|
|
08.11.2021, 17:14 | 7 |
0
|
2 / 2 / 0
Регистрация: 14.02.2021
Сообщений: 27
|
|
08.11.2021, 17:21 [ТС] | 8 |
0
|
08.11.2021, 17:21 | |
08.11.2021, 17:21 | |
Помогаю со студенческими работами здесь
8
Создать объекты различных классов и поместить в массив Как связать несколько классов через один общий класс? Класс, содержащий вложенные объекты других классов. Обратиться к методам этих классов Объекты классов не видны во вложенной функции одной из классов Поместить экземпляры разных классов в один массив Преобразования объектов классов в объекты других классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |