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

📄 std_pattern.h

📁 单件模块
💻 H
字号:
#ifndef _GP_STDPATTERN_H
#define _GP_STDPATTERN_H

namespace GP
{
	//----------------------------------------------------------------------------------------------
	//Singleton<DataType>                          单件类,只会产生一个对象
	//SINGLETON(newClassName, orgClassName)        单件宏,从一个类(orgClassName)派生出一个单件类(newClassName),保持基类的功能
	//----------------------------------------------------------------------------------------------
	template <typename DataType>
	class Singleton
	{
		static Singleton<DataType> s;
		DataType * data;
		Singleton(DataType * x) : data(x){}
		Singleton(const Singleton<DataType> &);
		Singleton<DataType> & operator = (Singleton<DataType> &);
	public:
		static Singleton<DataType> & instance(){return s}	
		DataType getData(){return * data}
		void setData(DataType & theData){*data = theData}
	};


#define SINGLETON(newClassName, orgClassName)                  \
	class newClassName : public orgClassName                   \
	{                                                          \
		newClassName(const newClassName &);                    \
		newClassName & operator = (const newClassName &);      \
	protected:                                                 \
		newClassName(){};                                      \
	public:                                                    \
		static newClassName & instance()                       \
		{                                                      \
			static newClassName theInstance;                   \
			return theInstance;                                \
		}                                                      \
	};                                                        \
}
template <typename DataType>
GP::Singleton<DataType> GP::Singleton<DataType>::s(NULL);



#endif

⌨️ 快捷键说明

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