有人告诉我,我的单例模板可能不是真正的单例,因为可以使用它创建多个对象。当我问如何解决它时,我被忽略了。这就是为什么我来这里问我的单例模板类真的是单例吗?
#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 >
{
};