// Common/AutoPtr.h | |
#ifndef __COMMON_AUTOPTR_H | |
#define __COMMON_AUTOPTR_H | |
template<class T> class CMyAutoPtr | |
{ | |
T *_p; | |
public: | |
CMyAutoPtr(T *p = 0) : _p(p) {} | |
CMyAutoPtr(CMyAutoPtr<T>& p): _p(p.release()) {} | |
CMyAutoPtr<T>& operator=(CMyAutoPtr<T>& p) | |
{ | |
reset(p.release()); | |
return (*this); | |
} | |
~CMyAutoPtr() { delete _p; } | |
T& operator*() const { return *_p; } | |
// T* operator->() const { return (&**this); } | |
T* get() const { return _p; } | |
T* release() | |
{ | |
T *tmp = _p; | |
_p = 0; | |
return tmp; | |
} | |
void reset(T* p = 0) | |
{ | |
if (p != _p) | |
delete _p; | |
_p = p; | |
} | |
}; | |
#endif |