많은 C++ 객체가 AddRef 및 FreeRef 메소드를 통해 계산되는 rerfrence를 구현합니다. FreeRef가 참조 횟수를 0으로 줄이면 개체가 자체를 삭제합니다.Swig and refrence counted C++ classes
refrence counted 개체를 반환하는 모든 메서드는 refrence를 증가시키지 않습니다. 이것은 스마트 포인터가 단순히 포인터를받는 카운트 값을 증가시키고 더 이상 포인터를 참조하지 않을 때 카운트 값을 감소시킬 수 있기 때문에 간단합니다. 예 :
template<class T> FlPtr
{
T *p;
public:
FlPtr(T *p=0):p(p){if(p)p->AddRef();}
~FlPtr(){if(p)p->FreeRef();}
FlPtr<T>& operator =(T *newP)
{
if(newP)newP->AddRef();
if(p)p->FreeRef();
p = newP;
return *this;
}
operator T*(){return p;}
};
난 그냥 그러나 작업 중 하나 :(