我们在工作中往往会用到单件类。但是我们知道单件类的实现就那么几步,如果系统中有多个单件类的话,去一个个写非常麻烦,那么怎么办呢?
单件模版类就派上用场了:
template <typename _CoClass>
class Singleton
{
public:
Singleton() {}
virtual ~Singleton() {}
static _CoClass& GetInstance()
{
if (!m_psInstance)
{
m_psInstance = new _CoClass();
}
return *m_psInstance;
}
private:
// 防止单件复制.
Singleton(const Singleton& copy);
Singleton& operator = (const Singleton& rhs);
static _CoClass* m_psInstance;
};
//
// 单件实例指针初始化.
//
template <typename _CoClass>
_Coclass* Singleton<_CoClass>::m_psInstance = 0;
那么该怎么用呢?如下:
class CDataMgr : public Singleton<CDataMgr>
{
public:

本文介绍了如何利用C++模板来简化单例类的编写,避免重复工作。通过前向声明和模板实例化的特性,确保在不同源文件中包含同一模板头文件时,只会生成一个单例实例,防止链接时的多重定义问题。
最低0.47元/天 解锁文章
322

被折叠的 条评论
为什么被折叠?



