singleton.h

来自「国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国」· C头文件 代码 · 共 54 行

H
54
字号
#ifndef __SINGLETON_H__
#define __SINGLETON_H__

///////////////////////////////////////////////////////////////////////////////
// include define statement
///////////////////////////////////////////////////////////////////////////////

#include "assert.h"

///////////////////////////////////////////////////////////////////////////////
// class define statement
///////////////////////////////////////////////////////////////////////////////

template <typename T> class CSingleton
{
	static T* ms_Singleton;
	
public:
	CSingleton(void)
	{
		assert(!ms_Singleton);
		int offset = (int)(T*)1 - (int)(CSingleton <T>*)(T*)1;
		ms_Singleton = (T*)((int)this + offset);
		
	}
	
	~CSingleton(void)
	{
		assert(ms_Singleton);
		ms_Singleton = 0;
	}
	
	static T* GetSingleton(void)
	{
		assert(ms_Singleton);
		return ms_Singleton;
	}
	
	static T* GetSingletonPtr(void)
	{
		assert(ms_Singleton);
		return ms_Singleton;
	}
	
	static T& GetSingletonInstance(void)
	{
		assert(ms_Singleton);
		return(*ms_Singleton);
	}
};

template <typename T> T* CSingleton <T>::ms_Singleton = 0;

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?