2016. 12. 1. 17:58ㆍIT-개발/C및C++
// C++ 템플릿을 활용해서 SingleTone 을 이렇게 자유롭게 잘 사용할 수 있을 줄이야~
// SingleTon
////////////////////////////////////////////////
#include <iostream>
using namespace std;
template <typename T>
class MySingleton
{
public:
MySingleton() {}
virtual ~MySingleton() {}
// 이 멤버를 통해서맊 생성이 가능하다.
static T* GetSingleton()
{
// 아직 생성이 되어 있지 않으면 생성한다.
if( NULL == _Singleton ) {
_Singleton = new T;
}
return ( _Singleton );
}
static void Release()
{
delete _Singleton;
_Singleton = NULL;
}
private:
static T* _Singleton;
};
template <typename T> T* MySingleton<T> ::_Singleton = NULL;
// 싱글톤 클래스 템플릿을 상속 받으면서 파라메터에 본 클래스를 넘긴다.
class MyObject : public MySingleton<MyObject>
{
public:
MyObject() : _nValue(10) {}
void SetValue( int Value ) { _nValue = Value;}
int GetValue() { return _nValue; }
private :
int _nValue;
};
void main()
{
MyObject* MyObj1 = MyObject::GetSingleton();
cout << MyObj1->GetValue() << endl;
// MyObj2는 Myobj1과 동일한 객체이다.
MyObject* MyObj2 = MyObject::GetSingleton();
MyObj2->SetValue(20);
cout << MyObj1->GetValue() << endl;
cout << MyObj2->GetValue() << endl;
}
좋은 Sample들은 자주 보고 활용하게 된다. 좋은지 아닌지는 개인의 판단.. ㅋ
'IT-개발 > C및C++' 카테고리의 다른 글
STL - list - Sample (1) (0) | 2016.12.02 |
---|---|
STL - iterator 사용하기 sample (0) | 2016.12.01 |
argv / argc 에 대해_1 (0) | 2016.04.26 |
전처리문... 한번씩 참고 (펌) (0) | 2016.03.07 |
함수포인터 - 콜백(callback) (펌) (0) | 2015.10.20 |