#ifndef __SCOPEDPTR_H #define __SCOPEDPTR_H #include "NonCopyable.hpp" #include "UtilExportable.hpp" template< typename T > class UTIL_DLL_VISIBLE scopedPtr : private noncopyable { public: explicit scopedPtr( T *p = 0 ) : m_p( p ) { } ~scopedPtr( ) { delete m_p; } T& operator*( ) const { return *m_p; } T* operator->( ) const { return m_p; } T* get( ) const { return m_p; } bool operator==( const T* p ) const { return m_p == p; } bool operator!=( const T* p ) const { return m_p != p; } void reset( T *p = 0 ) { if( m_p != p ) { delete m_p; m_p = p; } } private: T *m_p; }; #endif