#ifndef CTEMPLETESINGLETON_H_
#define CTEMPLETESINGLETON_H_
template<class T>
class CTempleteSingleton
{
public:
static T* Instance()
{
if(!pInstance_)
pInstance_=new T;
return pInstance_;
}
private:
CTempleteSingleton(){};
CTempleteSingleton(const CTempleteSingleton&);
CTempleteSingleton& operator=(const CTempleteSingleton&);
~CTempleteSingleton(){};
static T* pInstance_;
};
template<class T>
T* CTempleteSingleton<T>::pInstance_=0;
#endif
class A
{
int a;
};
int main()
{
A* p=CTempleteSingleton<A>::Instance();
return 0;
}