阅读新闻

一个通用的单体模板

[日期:2007-04-01] 来源:  作者: [字体: ]
         
#include <cassert.h>

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 = 0;}
 static T& GetSingleton(void)
 { assert(ms_Singleton); return (*ms_Singleton); }
 static T* GetSingletonPtr(void)
 { return ms_Singleton; }
};

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

以下是使用该类的例子:
class TextureMgr : public Singleton<TextureMgr>
{
 public:
 Texture* GetTexture(const char* name);
}


阅读:
录入:admin

评论 】 【 推荐 】 【 打印
上一篇:四元数转换矩阵代码
下一篇:一条检测内存泄露的函数.
相关新闻      
本文评论       全部评论
发表评论
字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款