Название: Наследование QList Отправлено: billygates от Январь 27, 2010, 09:32 Знаю, что в рекоммендациях троллей отдельно подчеркивается, что не стоит наследоваться от системных типов. Но хочется свести менеджмент памяти к минимуму: хочется вместо
Код чтобы элементы списка удалялись автоматически по выходу за scope. Здесь два варианта: либо умные указатели, либо наследование от QList с реализацией деструктора, удаляющего все указатели. Насколько распространен и правилен второй вариант? Спасибо. p.s. Да, я знаю, что у QList невиртуальный деструктор. Название: Re: Наследование QList Отправлено: niXman от Январь 27, 2010, 09:35 а QList<>::clear() чем не угодил?
Название: Re: Наследование QList Отправлено: billygates от Январь 27, 2010, 09:41 а QList<>::clear() чем не угодил? Цитировать чтобы элементы списка удалялись автоматически по выходу за scope. cliear() и так выполнится при вызове деструктора списка. Но только не освободит память из под них, обратите внимание, что у меня в списке содержатся указатели. Название: Re: Наследование QList Отправлено: BRE от Январь 27, 2010, 09:46 А ты поищи по исходникам Qt строку: "public QList<" :)
Название: Re: Наследование QList Отправлено: niXman от Январь 27, 2010, 09:50 Цитировать cliear() и так выполнится при вызове деструктора списка. Но только не освободит память из под них, обратите внимание, что у меня в списке содержатся указатели. это не является стандартным поведением. а что вы будите делать если в свой вариант контейнера захотите помещать не указатели?Название: Re: Наследование QList Отправлено: billygates от Январь 27, 2010, 10:04 Цитировать cliear() и так выполнится при вызове деструктора списка. Но только не освободит память из под них, обратите внимание, что у меня в списке содержатся указатели. это не является стандартным поведением. а что вы будите делать если в свой вариант контейнера захотите помещать не указатели?А ты поищи по исходникам Qt строку: "public QList<" Ой! А они вравду сами этим пользуются :). Вопрос закрыт. Всем спасибо за помощь! Название: Re: Наследование QList Отправлено: Akaiten от Январь 27, 2010, 10:24 Цитировать cliear() и так выполнится при вызове деструктора списка. Но только не освободит память из под них, обратите внимание, что у меня в списке содержатся указатели. это не является стандартным поведением. а что вы будите делать если в свой вариант контейнера захотите помещать не указатели?Он то как раз и сделать класс для хранения указателей. К тому же можно добавить свойство типа ownObjects. Если оно установлено, то указатели автоматически уничтожаются при разрушении списка. p.s. Да, я знаю, что у QList невиртуальный деструктор. Можно написать обёртку вокруг QList<MyClass *>Использовать умные указатели, например, Qt-шные или какой-нибудь другой, легковесный Добавлено 11:04 В принципе то что деструктор не виртуальный пофиг, если вы не будете удалять ваш класс через указатель на QList<T>, например: Код
|