Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2013, 12:12   #1
denrubun
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 82
По умолчанию список полиморфных объектов

Доброго времени суток!

столкнулся с такой проблемой: нужно сделать список объектов разного типа (но все типы наследуются от gameobject). писать это дело с нуля совсем не хотца, я думал сделать через std::list.

но вот засада - сувать в него объекты разных типов нельзя, а если как параметр шаблона задать <gameobject *> - то при удалении элементов будет происходить утечка памяти, т.к. удалится только указатель.

можно ли лист вразумить к самостоятельному освобождению памяти при удалении элементов? (это мой приоритетный вариант)

либо можно напилить наследника от листа, но в нем придется все методы удаления переопределять.

либо можно сделать класс - pointer_gameobject и туда в деструктор написать освобождение памяти.

Какой вариант вы бы выбрали / предложите свой?
denrubun вне форума Ответить с цитированием
Старый 17.11.2013, 14:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при удалении элементов будет происходить утечка памяти, т.к. удалится только указатель.
Перед удалением принудительно вызывай деструктор. Я так делаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2013, 14:25   #3
denrubun
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 82
По умолчанию

т.е. каждый раз ручками? боюсь упустить чтонибудь
denrubun вне форума Ответить с цитированием
Старый 17.11.2013, 14:28   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

denrubun

Какой вариант вы бы выбрали / предложите свой?

1. хранить в списке смарт-поинтеры, std::shared_ptr<game object> (или boost::shared_ptr, если компилятор не поддерживает std)

2. boost::ptr_list<>
Rififi вне форума Ответить с цитированием
Старый 17.11.2013, 14:38   #5
denrubun
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 82
По умолчанию

Благодарю. В тайне подозревал что этим все и закончится
denrubun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление своих объектов в Добавление своих объектов в двунаправленный кольцевой список voidmain C# (си шарп) 3 21.03.2013 13:08
динамический список объектов tim47 Помощь студентам 0 16.05.2012 16:17
список объектов под курсором chingiz Помощь студентам 2 21.04.2012 20:22
ошибкa в проге....список объектов user666 Общие вопросы C/C++ 2 02.05.2010 23:10
Список полиморфных объектов kaarb Помощь студентам 0 20.06.2009 11:24