Есть ли способ синглтон класс оставить в стеке?
Классическая реализация синглетоне такая(из банды четырёх):
Singleton (одиночка) (130) Гарантирует, что некоторый класс может иметь только один экземпляр, и предоставляет глобальную точку доступа к нему.
class Singleton {
public:
static Singleton* Instance();
protected:
Singleton();
private:
static Singleton* _instance;
};
А реализация такова:
Singleton* Singleton::_instance = nullptr;
Singleton* Singleton::Instance () {
if (_instance == nullptr) {
_instance = new Singleton;
}
return _instance;
}
Тогда, любой класс, кто обвязан одиночкой, автоматом всегда лежит в куче. Что делать если хотелось бы его переместить в стек, при условии что его глобальность не нужна?
Источник: Stack Overflow на русском