AutoPtr.h

Go to the documentation of this file.
00001 #ifndef AUTOPTR_H
00002 #define AUTOPTR_H
00003 
00004 template<typename T> class AutoPtr
00005 {
00006     public:
00007         explicit AutoPtr (T* const p = 0) :
00008             p_(p)
00009         {
00010         }
00011 
00012         ~AutoPtr ()
00013         {
00014             if (p_)
00015                 delete p_;
00016         }
00017 
00018         void deallocate ()
00019         {
00020             *this = 0;
00021         }
00022 
00023         T* release ()
00024         {
00025             T* const p = p_;
00026             p_ = 0;
00027             return p;
00028         }
00029 
00030         void operator = (T* const p)
00031         {
00032             if (p_)
00033                 delete p_;
00034             p_ = p;
00035         }
00036 
00037         T* operator -> () const
00038         {
00039             return p_;
00040         }
00041 
00042         operator T* () const
00043         {
00044             return p_;
00045         }
00046 
00047         operator bool () const
00048         {
00049             return p_;
00050         }
00051 
00052     private:
00053         T* p_;
00054 
00055         AutoPtr (const AutoPtr&); /* no copy */
00056         void operator = (AutoPtr&); /* no assignment */
00057 };
00058 
00059 #endif

Generated by  doxygen 1.6.2