У меня есть класс для вычисления с использованием некоторых обратных вызовов. эти обратные вызовы должны выделять данные (динамические массивы), которые должны находиться за пределами области обратного вызова, но не после разрушения класса. Я думал о том, чтобы создать vector
из auto_ptr
, который будет автоматически уничтожен, когда класс уничтожит:
class MyClass
{
vector<auto_ptr<MyObject>> ThingsToDie;
};
Проблема в том, что у меня выделено много объектов, и они не разделяют базовый тип, поэтому я не могу использовать один vector
для этого, и создание вектора для каждого типа - большая работа.
Иерархия, подобная следующей:
auto_ptr_base (virtual destructor)
|
auto_ptr<T>
Решит мою проблему, потому что я мог бы сделать что-то вроде
class MyClass
{
vector<auto_ptr_base> ThingsToDie;
};
и уничтожение будет фактически отправлено каждому специализированному типу автоматически.
Проблема в том, что STL не имеет такой иерархии, и я не хочу повторно реализовывать auto_ptr.
Есть ли другое решение для этого?