Introduction
Sometimes we have to code with 'singleton'. If you don't know what Singleton is, you can read about it in many Design Pattern books. Singleton principle is really simple.
As you know, if you use reference pointer for singleton object, then you must delete it when program terminates. But it will be good because it does 'late instance'.
I want to terminate singleton object automatically, and instance lately. So, I coded this.
Good things:
- Late instance.
- Safe terminate automatically.
- Separated code for Object and Singleton.
Here is my tiny singleton helper class - CSingletonT<>
, and I hope it helps you.
//
// Using singletonT class
//
#include "SingletonT.h"
// test class
class CObj
{
protected:
CObj(){ x = 0 ; TRACE("Created CObj\r\n"); }
public:
virtual ~CObj(){ x = 0 ; TRACE("Deleted CObj\r\n");}
int x;
};
// Testing
void CTestSingleTDlg::OnButton1()
{
// TODO: Add your control notification handler code here
// if first call, then singleton object will instance ( instance lately )
CObj* o = CSingletonT<CObj>::GetObject();
// use singletone object
o->x ++;
TRACE("o->x = %d\r\n",o->x);
}
------------------------------------------------------------------------------------
싱글톤에 조금은 벗어났지만,활용 할 수 있는 방법은 많다고 생각 됩니다.
원문을 보고 싶으시다면 아래로...
정확한 출처는 CodeProject 입니다.
http://www.codeproject.com/cpp/singlet.asp
우리 나라 분이 작성한 글입니다