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

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

Восстановить пароль Регистрация
 
o33ik
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
14.11.2013, 19:31     Хранение в контейнере обьектов разных классов #1
Здраствуйте. Есть небольшая иерархия классов, в вершине которой стоит абстрактный класс 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); // не работает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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     Хранение в контейнере обьектов разных классов
Ответ Создать тему
Опции темы

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