00001 #pragma once 00002 #include "constants.h" 00003 00004 template <class T> 00005 class GSingletonManager 00006 { 00007 public: 00008 static T *GetInstance() 00009 { 00010 if (!Instance) 00011 { 00012 Instance = new T; 00013 } 00014 return Instance; 00015 } 00016 00017 ~GSingletonManager() 00018 { 00019 delete Instance; 00020 } 00021 00022 protected: 00023 GSingletonManager() 00024 {} 00025 private: 00026 GSingletonManager(const GSingletonManager &m) {} 00027 GSingletonManager &operator=(const GSingletonManager &m) {} 00028 static T *Instance; 00029 };