定义一个Singleton类,一般都是要被其他实际的类继承,使这个实际的类具有Singleton功能。
现在看到二种方式。
1、用模板定义Singleton类:
template <typename T> class Singleton {...}
然后这样继承:
class WindowManager : public Singleton <WindowManager> {...}
2、直接继承:
class Singleton {...}
然后这样继承:
class WindowManager : public Singleton {...} // 重载getSingleton返回子类指针。
这二种方式哪种方式好哪?
第一种方式是CEGUI中使用的方法,毕竟比较成熟,但好像麻烦一些。
第二种方式只是网上网友写的方法,只有几行简单的示例代码,不知道是不是正确?
请前辈指点,谢谢!
------解决方案--------------------
还需要申明一下友元类;
- C/C++ code
template <typename T> class Singleton { private: friend class T; }; class WindowManager : public Singleton <WindowManager> {...}