Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
o33ik
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
#1

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

14.11.2013, 19:31. Просмотров 572. Ответов 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); // не работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2013, 19:31
Ответы с готовыми решениями:

Хранение сложных классов в контейнере
Всем, привет. Прошу помощи в одной проблемке. В общем у нас должны быть два...

Как хранить объекты разных классов в одном контейнере
Здравствуйте! Хочу реализовать хранение разных классов(базовый и наследник)...

Хранение в контейнере deque целых чисел и проверка основных операций
Написала код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;deque&gt; ...

Синтаксис классов и обьектов
Всем привет, занимаюсь созданием программы работы с векторами, дак вот, как...

Объекты разных типов в одном контейнере и c++ 11 auto
Собственно дабы упростить себе жизнь, решил использовать auto но столкнулся с...

5
programina
2050 / 605 / 41
Регистрация: 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);
1
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 3
14.11.2013, 19:45 #3
Цитата Сообщение от o33ik Посмотреть сообщение
C++
1
mylist.insert(&car1); // не работает
push_back/push_front
1
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();
    };

не работает(
0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 3
14.11.2013, 21:35 #5
o33ik, ну в контейнере же указатели, значит
C++
1
(*itr)->input();
1
programina
2050 / 605 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.11.2013, 21:38 #6
Цитата Сообщение от o33ik Посмотреть сообщение
programina, а как теперь к любому обьекту применить метод, который описан в классе(естественно, методы есть реализацией виртуальных методов, которые описаны в родительском классе)?
Не знаю. Но я точно не стала бы хранить обьекты в контейнере, по-моему это бессмысленно, когда есть обычные массивы.
0
14.11.2013, 21:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2013, 21:38

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

Хранение классов в памяти
Доброго времени суток, хочу узнать подробнее о хранении классов в памяти....

Хранение разных типов
Приветствую всех. Возник вот такой вопрос. У меня есть, например, 3 разных...


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

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

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