#pragma once
template <class T>
class Singleton
{
private:
static T* mInstatce;
Singleton(const Singleton<T>& c) {}
Singleton &operator=(const Singleton<T>& c) {}
class DeleteSingleton
{
public:
~DeleteSingleton()
{
if (Singleton::mInstatce)
{
delete Singleton::mInstatce;
Singleton::mInstatce = nullptr;
}
}
};
static DeleteSingleton DeleteSingleton;
protected:
Singleton() {}
~Singleton() {}
public:
static T* GetInstance()
{
if (mInstatce == nullptr)
mInstatce = new T();
return mInstatce;
};
};
template <class T>
T* Singleton<T>::mInstatce = nullptr;
目前结合网上各个大佬总结出来的,好使,具体引用了了哪些我也记不得了,如果有冒犯还望指出。供大家学习参考