//单态类模板
template<typename T>class Singleton
{
public:
Singleton(void )
{
assert(!m_Singleton );
m_Singleton= static_cast<T*>(this);
}
~Singleton(void )
{
assert(m_Singleton );
m_Singleton= 0;
}
staticT& GetSingleton(void )
{
assert(m_Singleton );
return( *m_Singleton );
}
staticT* GetSingletonPtr(void )
{
returnm_Singleton;
}
private:
staticT* m_Singleton;
};
template <typenameT> T* Singleton <T>::m_Singleton = NULL;