NGSolve
4.9
|
00001 #ifndef FILE_NGS_AUTOPTR 00002 #define FILE_NGS_AUTOPTR 00003 00004 /**************************************************************************/ 00005 /* File: autoptr.hpp */ 00006 /* Author: STL, Joachim Schoeberl */ 00007 /* Date: 29. Dec. 02 */ 00008 /**************************************************************************/ 00009 00010 namespace ngstd 00011 { 00012 00017 template <typename T> 00018 class AutoPtr 00019 { 00020 private: 00022 T * ptr; 00023 public: 00025 typedef T* pT; 00026 00028 explicit AutoPtr (T * p = 0) { ptr = p; } 00030 ~AutoPtr () { delete ptr; } 00031 00033 T & operator*() const { return *ptr; } 00034 00036 T* operator->() const { return ptr; } 00037 00039 T *& Ptr() { return ptr; } 00040 00042 T * Ptr() const { return ptr; } 00043 00045 void Reset(T * p = 0) { if (p != ptr) { delete ptr; ptr = p; } } 00046 00048 operator bool () { return ptr != 0; } 00049 00050 private: 00052 AutoPtr (AutoPtr &) { ; } 00054 AutoPtr & operator= (AutoPtr &) { return *this; } 00055 }; 00056 00057 } 00058 00059 #endif