#pragma once namespace Client { template class Singleton { public: // »ý¼ºÀÚ Singleton() { // ´ÙÁß»ó¼ÓÀÇ °æ¿ì ÀÌ Æ÷ÀÎÅͰªÀÌ ´Ù¸¦ ¼ö ÀÖ´Ù. ±×·¡¼­ ÀÌ °ªÀ» ¾Æ·¡¿¡¼­ ´õÇØÁØ´Ù. int offset = (int)(T*)1 - (int)(Singleton*)(T*)1; s_instance = (T*)( (int)this + offset ); } // ¼Ò¸êÀÚ virtual ~Singleton( void ) { s_instance = NULL; } // ÀνºÅϽº ¾ò±â static T* Instance( void ) { return s_instance; } static void ReleaseInstance( void ) { if( s_instance != NULL ) { delete s_instance; s_instance = NULL; } } private: static T* s_instance; }; template T* Singleton::s_instance = NULL; };