스마트 포인터( SmartPtr ) + template 연동하기
C++ 2008. 1. 24. 12:33 |스마트 포인터를 사용하고,
템플릿을 연동해서 여러가지 단위전략을 세울수 있다.
// CTest //
class CTest
{
public:
CTest() {}
~CTest() }
public:
int value;
};
typedef SmartPtr<CTest> CDeleteTestPtr;
typedef vector< CDeleteTestPtr > vObject;
// OpNewCreator //
template <class T>
struct OpNewCreator
{
static T* Crate()
{
return new T;
}
};
// CTestArray //
template < template <class> class CreatePolicy>
class CTestArray
: public CreatePolicy< CTest >
, public vObject
{
public:
CTestArray()
{
vObject::clear();
}
~CTestArray() { }
// Add라는 함수를 하나 제작해 봤다.
// OpNewCreator를 사용해서 간접적으로 메모리를 생성한다.
void Add(int idx)
{
CDeleteTestPtr ptr = OpNewCreator<CTest>().Crate();
ptr->value = idx;
vObject::push_back( ptr );
}
};
typedef SmartPtr< CTestArray<OpNewCreator> > CTestArrayPtr;
///// 사용법
CTestArrayPtr ar;
for(int i = 0; i < 10; i++)
{
ar->Add(i);
}