#pragma once template <typename T> class Singleton { public: static T *GetInstance() { if (NULL == s_ins) { s_ins = new (T)(); atexit(Destory); } return s_ins; } private: static void Destory() { delete s_ins; s_ins = NULL; } Singleton(){} ~Singleton(){} private: static T* volatile s_ins; }; template <typename T> T* volatile Singleton<T>::s_ins = NULL;
用法:
Singleton<TestClass>::GetInstance()->Func()