7. 사용 클래스의 싱글턴으로 구성
싱글턴 메크로 추가
//싱글턴을위한
#define DECLEAR_SINGLETON( className )\
public:\
static className* Instance();\
virtual void releaseInstance();\
private:\
static className* m_pInstance;
#define CREATE_FUNCTION( className , funcName ) \
static className* ##funcName()\
{\
return className::Instance();\
};
#define IMPLEMENT_SINGLETON( className )\
className* className::m_pInstance = NULL;\
className* className::Instance()\
{\
if ( NULL == m_pInstance )\
{\
m_pInstance = new className;\
}\
return m_pInstance;\
}\
void className::releaseInstance()\
{\
if ( NULL != m_pInstance )\
{\
delete m_pInstance;\
m_pInstance = NULL;\
}\
}
.h 파일
class CMsgView : public CListView
{
DECLEAR_SINGLETON( CMsgView);
….
}
CREATE_FUNCTION( CMsgView, LogView );
.cpp 파일 위에 IMPLEMENT_SINGLETON( CMsgView ); 추가
// CMsgView
IMPLEMENT_SINGLETON( CMsgView );
IMPLEMENT_DYNCREATE(CMsgView, CListView)
실제 사용 클래스 객체 생성
CMainFrame::CMainFrame()
{
LogView();
}
CMainFrame::~CMainFrame()
{
LogView()->releaseInstance();
}