很简单的
Singleton
的实现,保持全局该类型变量的唯一性,在首次调用的时候创建,系统结束自行删除。
这里用到了上一篇的
Smart Pointer
。
template
<class T>
class
Singleton
{
public
:
static T* Instance(void) {
if (m_pInstance == NULL)
m_pInstance = new Singleton;
return &(m_pInstance->m_Data);
}
private
:
T m_Data;
static SmartPtr< Singleton<T> > m_pInstance;
};
template
<class T>
SmartPtr
< Singleton<T> > Singleton<T>::m_pInstance;
// example
//
#define
g_
A
(*Singleton<
classA
>::Instance())