условия задачи
есть некая структура(класс) списков
class Singl
{
Singl *Next;
static Singl *This;
~Singl() { if (Next) delete Next; };
static Singl *Init()
{
//.... инициалицация This,Next... итд
};
};
Singl *Singl::This = 0;
1) после завершения программы нужно сделать if (Singl::This) delete Singl::This;
для автоматического очистки списка
недолго думая набросал класс дестроер указателя
template <typename T>
class auto_delete_ptr
{
T **ptr;
public:
auto_delete_ptr(T **p) { ptr = p;};
~auto_delete_ptr() { if (*ptr) delete *ptr; };
};
и далее в .cpp модуле
static auto_delete_ptr autoDel(&Singl::This);
есть ли другие более стандартные варианты?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, Аноним, Вы писали:
А>условия задачи
А>есть некая структура(класс) списков
А>А>class Singl
А>{
А> Singl *Next;
А> static Singl *This;
А> ~Singl() { if (Next) delete Next; };
А> static Singl *Init()
А> {
А> //.... инициалицация This,Next... итд
А> };
А>};
А>Singl *Singl::This = 0;
А>
А>1) после завершения программы нужно сделать if (Singl::This) delete Singl::This;
А> для автоматического очистки списка
А>недолго думая набросал класс дестроер указателя
А>А>template <typename T>
А>class auto_delete_ptr
А>{
А> T **ptr;
А> public:
А> auto_delete_ptr(T **p) { ptr = p;};
А> ~auto_delete_ptr() { if (*ptr) delete *ptr; };
А>};
А>
А>и далее в .cpp модуле
А> static auto_delete_ptr autoDel(&Singl::This);
А>есть ли другие более стандартные варианты?
std::auto_ptr<T> Singl::This; ...
Здравствуйте, Аноним, Вы писали:
А>условия задачи
А>есть некая структура(класс) списков
А>А>class Singl
А>{
А> Singl *Next;
А> static Singl *This;
А> ~Singl() { if (Next) delete Next; };
А> static Singl *Init()
А> {
А> //.... инициалицация This,Next... итд
А> };
А>};
А>Singl *Singl::This = 0;
А>
А>1) после завершения программы нужно сделать if (Singl::This) delete Singl::This;
А> для автоматического очистки списка
А>недолго думая набросал класс дестроер указателя
А>А>template <typename T>
А>class auto_delete_ptr
А>{
А> T **ptr;
А> public:
А> auto_delete_ptr(T **p) { ptr = p;};
А> ~auto_delete_ptr() { if (*ptr) delete *ptr; };
А>};
А>
А>и далее в .cpp модуле
А> static auto_delete_ptr autoDel(&Singl::This);
А>есть ли другие более стандартные варианты?
Singl *Singl::This=InitThis();
static Singl *InitThis()
{
static Singl _This;
return &_This;
};