В некотором коде я видел шаблон синглтона
template<typename T>
class Singleton
{
public:
Singleton(T& instance)
{
assert(!sfpInstance || (sfpInstance==&instance));
sfpInstance = &instance;
}
static T& getInstance()
{
assert(sfpInstance);
return *sfpInstance;
}
private:
static T* sfpInstance;
};
И классы, используемые следующим образом:
class MyClass : public Singleton<MyClass>
{
protected:
MyClass() : Singleton<MyClass>(*this) {}
}
Я не знаю, как это можно использовать как синглтон?
Если это можно использовать, как правильно его использовать.
РЕДАКТИРОВАТЬ: конструктор MyClass защищен.