// wzsingleton.h #ifndef _PROGRAMCOMMON_WZSINGLETON_H_ #define _PROGRAMCOMMON_WZSINGLETON_H_ #include "wztypedef.h" #include "wzassert.h" //------------------------------------------------------------------------------ /** @class CWzSingleton */ template class CWzSingleton { public: // »ý¼ºÀÚ CWzSingleton( void ) { WzAssert( !s_instance ); // ´ÙÁß»ó¼ÓÀÇ °æ¿ì ÀÌ Æ÷ÀÎÅͰªÀÌ ´Ù¸¦ ¼ö ÀÖ´Ù. ±×·¡¼­ ÀÌ °ªÀ» ¾Æ·¡¿¡¼­ ´õÇØÁØ´Ù. int offset = (int)(T*)1 - (int)(CWzSingleton*)(T*)1; s_instance = (T*)( (int)this + offset ); } // ¼Ò¸êÀÚ virtual ~CWzSingleton( void ) { s_instance = NULL; } // ÀνºÅϽº ¾ò±â static T* GetSingleton( void ) { return s_instance; } private: static T* s_instance; }; template T* CWzSingleton::s_instance = NULL; #endif // _PROGRAMCOMMON_WZSINGLETON_H_