模板类:
#ifndef SingleTon_hpp
#define SingleTon_hpp
template <typename T>
class Singleton
{
public:
static T* getInstance()
{
if (m_pInstance == nullptr)
m_pInstance = new T();
return m_pInstance;
}
static void destroyInstance()
{
delete m_pInstance;
m_pInstance = nullptr;
}
private:
Singleton(void);
virtual ~Singleton(void);
Singleton(const Singleton&);
Singleton& operator = (const Singleton&);
private:
static T* m_pInstance;
};
template <class T> T* Singleton<T>::m_pInstance = nullptr;
#endif /* SingleTon_hpp */
下面是在类中使用
class A{
public:
void show();
};
typedef Singleton<A> SingleA;//将类A定义为单例
在main中使用
int main{
A* a = SingleA::getInstance();
a->show();
//或者Singleton<A>::getInstance();
}