#include <iostream>
using namespace std;
template <typename T>
class Singleton
{
public:
static T& GetSingleton(void);
static T* GetSingletonPtr(void);
protected:
static T* m_pSingleton;
};
template <typename T>
T* Singleton<T>::m_pSingleton = NULL;
template <typename T>
T& Singleton<T>::GetSingleton(void)
{
m_pSingleton = new T;
return *m_pSingleton;
}
template <typename T>
T* Singleton<T>::GetSingletonPtr(void)
{
m_pSingleton = new T;
return m_pSingleton;
}
class CMsgManager : public Singleton<CMsgManager>
{
public:
virtual bool Initialize();
};
bool CMsgManager::Initialize()
{
cout<<"Bool CMsgManager::Initialize()"<<endl;
return 0;
}
int main(int argc, char** argv)
{
cout<<"Enter StartPreThread()"<<endl;
do
{
if (!CMsgManager::GetSingletonPtr()->Initialize())
{
cout<<"CMsgManager Initialize failed"<<endl;
break;
}
} while (0);
cout<<"Exit StartPreThread()"<<endl;
return 0;
}
单例继承模式
最新推荐文章于 2024-04-02 23:40:18 发布