这个单件模式如何生成对象
wacn 2006-05-16 12:56:32 template <typename T> class Singleton
{
static T* ms_Singleton;
public:
Singleton(void)
{
assert(!ms_Singleton);
int offset = (int) (T*)1 - (int)(Singleton<T>*)(T*)1;
ms_Singleton = (T*)(int )this + offset;
}
~Singleton(void)
{
assert(ms_Singleton);
ms_Singleton = NULL;
}
static T&GetSingleton(void)
{
assert(ms_Singleton);
return (*ms_Singleton);
}
static T* GetSingletonPtr(void)
{
assert(ms_Singleton);
return ms_Singleton;
}
};