13 / 13 / 8
Регистрация: 22.04.2012
Сообщений: 99
|
||||||
1 | ||||||
std::list - преобразование типов в контейнере17.07.2012, 01:58. Просмотров 1276. Ответов 4
Метки нет Все метки)
(
Здравствуйте. Суть проблемы попробую передать в коде
0
|
|
17.07.2012, 01:58 | |
Объекты разных типов в одном контейнере и c++ 11 auto
|
|
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
17.07.2012, 02:17 | 2 |
для этого в контейнере нужно хранить указатели на A.
и вместо безусловного каста лучше делать каст с проверкой: C& p=dynamic_cast<C&>(**l.begin()); // если тип не C, то бросится исключение. C* p=dynamic_cast<C*>(*l.begin()); // если тип не C, то p будет нул поинтером. для работы dynamic_cast-а нужно, чтобы у класса была хотябы одна виртуальная функция. Виртуальный деструктор базового класса - самый верный кандидат для такой функции.
0
|
13 / 13 / 8
Регистрация: 22.04.2012
Сообщений: 99
|
||||||
17.07.2012, 02:32 [ТС] | 3 | |||||
А до этого несколько дней назад я рассматривал на форуме вопрос о передачи в методы объектов по указателю. В данном случае важно применение умных указателей, если делать так
0
|
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
17.07.2012, 02:35 | 4 |
лучше конечно же умные указатели использовать, иначе придется следить за тем, чтобы не забыть вызвать delete для того, что в контейнере. не все умные указатели подходят для хранения в stl контейнерах.
0
|
17.07.2012, 08:58 | 5 |
Чтобы всегда знать, кто есть who, достаточно завести в иерархии классов свойство name, как в vcl. А в конструкторе каждого наследника ручками записывать туда название класса.
0
|
17.07.2012, 08:58 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
Тип значения в контейнере map - контейнер list Linq преобразование List<List<double>> в List<Array> Чтение и запись типов, массив типов и List<> данных в файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |