⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 singleton.h

📁 吃豆子游戏源码
💻 H
字号:
////////////////////////////////////////////////////////////////////////////////
//
// Sphi Middleware
// Copyright (C) 2007, Yuri Ivatchkovitch
// sphi.sourceforge.net
//
////////////////////////////////////////////////////////////////////////////////


#ifndef __SINGLETON_H__
#define __SINGLETON_H__

#pragma warning( disable:4311 )
#pragma warning( disable:4312 )

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

template <typename T> 
class Singleton 
{
	protected:
		static T* ms_Singleton;

	public:
		Singleton();
		virtual ~Singleton();
		static T& GetSingleton();
		static T* GetSingletonPtr();
};

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

template <typename T> Singleton<T>::Singleton()
{
	if (!ms_Singleton)
	{
		int offset = (int)(T*)1 - (int)(Singleton <T>*)(T*)1;
		ms_Singleton = (T*)((int)this + offset);
	}
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

template <typename T> Singleton<T>::~Singleton()
{ 
	if (ms_Singleton)
	{
		ms_Singleton=0;			
	}
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

template <typename T> T& Singleton<T>::GetSingleton()
{
	return (*ms_Singleton);
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

template <typename T> T* Singleton<T>::GetSingletonPtr()
{
	return (ms_Singleton);
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

#endif // __SINGLETON_H__

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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