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

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

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

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

14.11.2013, 19:31. Просмотров 452. Ответов 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++
Написала код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;deque&gt; using namespace std; void show (const char *str,...

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

Хранение разных типов - C++
Приветствую всех. Возник вот такой вопрос. У меня есть, например, 3 разных структуры, каждая из которых имеет разные поля: struct one ...

Хранение экземпляров классов-наследников, и вызов их методов - C++
Столкнулся с проблемой. Есть класс-родитель и 2 класса-наследника. class Base { public: void baseFunc(); }; class...

Группировка функций разных классов - C++
Всем привет! Возник спорный вопрос. Задача: Есть много классов, но у каждого из них может быть (! а может и нет) по методу,...

Умножение матриц разных классов - C++
Допустим есть 2 класса, описывающих матрицы А и Б, как произвести с ними арифметические операции(сложение, умножение)?

Передача структур разных классов - C++
Доброго времени суток. Сложилась такая проблема: В метод одного класса нужно передать структуру другого класса. CmatrixDial.h ...

Динамическая подстановка функций из разных классов - C++
Всем привет! Собственно есть вот такое... struct MyStruct { int index; MyStruct *next, *prev; }; class MyClass { public:

Сложить объекты двух разных классов - C++
Здравствуйте, при изучении программирования всплыл такой вопрос. Без объявления базового класса, возможно ли сложить 2 их объекта? И как...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
1914 / 599 / 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!
1440 / 1169 / 61
Регистрация: 21.04.2012
Сообщений: 2,439
Завершенные тесты: 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!
1440 / 1169 / 61
Регистрация: 21.04.2012
Сообщений: 2,439
Завершенные тесты: 3
14.11.2013, 21:35     Хранение в контейнере обьектов разных классов #5
o33ik, ну в контейнере же указатели, значит
C++
1
(*itr)->input();
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.11.2013, 21:38     Хранение в контейнере обьектов разных классов #6
Цитата Сообщение от o33ik Посмотреть сообщение
programina, а как теперь к любому обьекту применить метод, который описан в классе(естественно, методы есть реализацией виртуальных методов, которые описаны в родительском классе)?
Не знаю. Но я точно не стала бы хранить обьекты в контейнере, по-моему это бессмысленно, когда есть обычные массивы.
Yandex
Объявления
14.11.2013, 21:38     Хранение в контейнере обьектов разных классов
Ответ Создать тему
Опции темы

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