Очистка ресурсов
От: #zss#  
Дата: 23.05.10 17:03
Оценка:
1. Есть библиотека, которая работает с устройствами. После завершения работы необходимо вызвать некую функцию.
Когда экземпляр объекта был один, то это просто делалось в деструкторе. Но тут понадобилось создавать несколько объектов.
Если хотя бы один объект после этого разрушить, то от почистит ресурсы и остальные объекты не смогут работать.
Я сделал так
class SomeClass
{
    class Cleaner
    {
        friend class SomeClass;
        Cleaner () {}
        ~Cleaner() { CleanupFunc(); }
    };

    static const Cleaner CLEANER;
}

const SomeClass::Cleaner SomeClass::CLEANER;


Но тогда Cleaner разрушиться только после выхода из main.
А можно ли как сделать, чтоб CleanupFunc вызвалась после разрушения последнего из экземпляров SomeClass?
Что-то попахивает boost::shared_ptr, но не соображу как прикрутить это хозяйство...

2. Фабрика создает объекты базового класса. Как можно сделать так, чтоб в один момент времени существовал лишь один объект, но чтоб объекты можно было бы пересоздавать. Вроде как синглетон Майерса подходит, но он не позволяет пересоздавать объекты
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.