00001 #ifndef _unique_h
00002 #define _unique_h
00003
00006
00058 template <class T> class CUnique
00059 {
00060 public:
00061 CUnique (){}
00062 virtual ~CUnique(){}
00063
00064
00065
00067 static T * GetMe() {return Me;}
00068
00069
00070
00072 static void MakeMe()
00073 {
00074 assert (Me == NULL);
00075 Me = new T;
00076 }
00077
00079 static void DestroyMe()
00080 {
00081 delete Me;
00082 Me = NULL;
00083 }
00084 protected:
00085 static T * Me;
00086 };
00087
00088 template <class T> T* CUnique <T>::Me = NULL;
00089
00090 #endif
00091