64,643
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
template<class T>
class Singleton//单例模式
{
protected: ///不能单独定义对象
Singleton() {}
virtual ~Singleton() {}
public:
class garbo//
{
public:
~garbo()
{
delete Singleton<T>::ptr;
std::cout<<"+++\n";///TEST
}
};
public:
static T *get()
{
if(ptr==NULL) ptr = new T;
return ptr;
}
protected:
static T *ptr;
static garbo gb;///
};
template<class T>
T* Singleton<T>::ptr=NULL;
template<class T>
typename Singleton<T>::garbo Singleton<T>::gb;
class sig:public Singleton<sig>///
{
friend sig* Singleton<sig>::get();
sig() {}
public:
~sig() {}
void show()const{std::cout<<"TEST\n";}
};
int main()
{
sig::get()->show();
return 0;
}