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. Фабрика создает объекты базового класса. Как можно сделать так, чтоб в один момент времени существовал лишь один объект, но чтоб объекты можно было бы пересоздавать. Вроде как синглетон Майерса подходит, но он не позволяет пересоздавать объекты