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

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

Войти
Регистрация
Восстановить пароль
 
o33ik
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
#1

Хранение в контейнере обьектов разных классов - C++

14.11.2013, 19:31. Просмотров 437. Ответов 5
Метки нет (Все метки)

Здраствуйте. Есть небольшая иерархия классов, в вершине которой стоит абстрактный класс vehicle, а от него наследуеться пару классов. Помню, когда учил абстрактные классы, то можно было создать массив указателей на родительский класс, и в етот массив можно закидать ссылки на обьекты классов, которые наследуют родительский клсс. Вопрос: можно ли сделать подобное, но только с контейнерами?
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
    car car1; // car наследует vehicle
    car1.input();
 
    vehicle* arr[10]; 
    arr[0] = &car1; // работает
 
    list<vehicle*> mylist;
    mylist.insert(&car1); // не работает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2013, 19:31     Хранение в контейнере обьектов разных классов
Посмотрите здесь:

C++ Хранение в контейнере deque целых чисел и проверка основных операций
C++ Взаимодействие объектов разных классов
C++ Группировка функций разных классов
Хранение сложных классов в контейнере C++
Наследование static атрибута(хранение количества объектов наследуемых классов) C++
Хранение экземпляров классов-наследников, и вызов их методов C++
Хранение разных типов C++
Умножение матриц разных классов C++
Объекты разных типов в одном контейнере и c++ 11 auto C++
C++ Как хранить объекты разных классов в одном контейнере
C++ Передача структур разных классов
C++ Синтаксис классов и обьектов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.11.2013, 19:44     Хранение в контейнере обьектов разных классов #2
Цитата Сообщение от o33ik Посмотреть сообщение
C++
mylist.insert(&car1);
итератора нет.

Добавлено через 2 минуты
C++
list<vehicle*> mylist;
 
list<vehicle*>::iterator itr = mylist.begin();
 
mylist.insert(itr, &car1);
gray_fox
What a waste!
 Аватар для gray_fox
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
14.11.2013, 19:45     Хранение в контейнере обьектов разных классов #3
Цитата Сообщение от o33ik Посмотреть сообщение
C++
1
mylist.insert(&car1); // не работает
push_back/push_front
o33ik
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
14.11.2013, 21:32  [ТС]     Хранение в контейнере обьектов разных классов #4
programina, а как теперь к любому обьекту применить метод, который описан в классе(естественно, методы есть реализацией виртуальных методов, которые описаны в родительском классе)?

Добавлено через 4 минуты
попробовал вот так:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
    for(itr = mylist.begin(); itr != mylist.end(); itr++)
    {
        vehicle* obj = *itr;
        obj.input();
    };
и так
Кликните здесь для просмотра всего текста
C++
1
2
3
4
    for(itr = mylist.begin(); itr != mylist.end(); itr++)
    {
        *itr.input();
    };

не работает(
gray_fox
What a waste!
 Аватар для gray_fox
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
14.11.2013, 21:35     Хранение в контейнере обьектов разных классов #5
o33ik, ну в контейнере же указатели, значит
C++
1
(*itr)->input();
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.11.2013, 21:38     Хранение в контейнере обьектов разных классов #6
Цитата Сообщение от o33ik Посмотреть сообщение
programina, а как теперь к любому обьекту применить метод, который описан в классе(естественно, методы есть реализацией виртуальных методов, которые описаны в родительском классе)?
Не знаю. Но я точно не стала бы хранить обьекты в контейнере, по-моему это бессмысленно, когда есть обычные массивы.
Yandex
Объявления
14.11.2013, 21:38     Хранение в контейнере обьектов разных классов
Ответ Создать тему
Опции темы

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