有人告诉我,我的单例模板可能不是真正的单例,因为有多种方法可以用它创建多个对象。当我问如何修复它时,我被忽略了。这就是为什么我来这里问我的单例模板类真的是单例吗?
#ifndef SINGLETON_H_
#define SINGLETON_H_
template <class T>
class Singleton
{
private:
static T* instance;
protected:
Singleton<T>( )
{
}
public:
static T* getInstancePtr( )
{
if ( instance == 0 )
instance = new T( );
return instance;
}
};
template <class T> T* Singleton<T>::instance = 0;
#endif
然后它被一个类继承,我希望它像这样成为一个单例:-
class Console : public Singleton< Console >
{
};
最佳答案
您已使默认构造函数 protected
。派生类可以访问它,所以这将编译:
Console c1, c2;
关于c++ - 我的单例模板真的是单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267725/