// 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