T>Нет возможности избавиться от void*. Так как классы все разные и не связаны с друг другом.
Ну как, есть куча способов это побороть:
1. Отнаследовать их все от общего предка с виртуальным деструктором. Т.е. у вас Command должна быть имплементирована так, как у топикстартера.
2. Контейнеры для перечисленных типов boost::variant
3. Контейнеры для любых типов boost::shared_ptr, boost::any
T>Не подскажите мне это коретно освободить память. T>
Здравствуйте, johny5, Вы писали:
J>Ну как, есть куча способов это побороть: J> 1. Отнаследовать их все от общего предка с виртуальным деструктором. Т.е. у вас Command должна быть имплементирована так, как у топикстартера. J> 2. Контейнеры для перечисленных типов boost::variant J> 3. Контейнеры для любых типов boost::shared_ptr, boost::any J>Вам нужно отходить от фокусов с памятью и переходить на типобезопасное программирование.
Если честно я даже не думал в этом направление. Основной задачей для меня было только не засорять кучу.
Если бы этот кусок кода точно правильно удалял объект то я бы на нем и остановился. Так как проект не очень большой и вообще VC++ использую только для связи между C# и native OpenGL.
Re[7]: Хранение в контейнере объектов разного типа
T>Если бы этот кусок кода точно правильно удалял объект то я бы на нем и остановился. Так как проект не очень большой и вообще VC++ использую только для связи между C# и native OpenGL.
Ну тогда тебе тяжело будет имплементировать порт самому. Может заюзать чтонть готовое?
Re[8]: Хранение в контейнере объектов разного типа
Здравствуйте, Tpyn666, Вы писали:
J>> 2. Контейнеры для перечисленных типов boost::variant J>>Вам нужно отходить от фокусов с памятью и переходить на типобезопасное программирование.
T>Если честно я даже не думал в этом направление. Основной задачей для меня было только не засорять кучу.
Если кучу и несвязанные классы, то используй boost::variant< Class1, Class2, Class3, ... >. http://boost.org/libs/variant