netgen/libsrc/general/autoptr.hpp

37 lines
952 B
C++
Raw Normal View History

2009-01-13 04:40:13 +05:00
#ifndef FILE_AUTOPTR
#define FILE_AUTOPTR
/**************************************************************************/
/* File: autoptr.hpp */
/* Author: STL, Joachim Schoeberl */
/* Date: 29. Dec. 02 */
/**************************************************************************/
2009-07-20 14:36:36 +06:00
namespace netgen
{
2009-01-13 04:40:13 +05:00
template <typename T>
class AutoPtr
{
private:
T * ptr;
public:
typedef T* pT;
explicit AutoPtr (T * p = 0) { ptr = p; }
~AutoPtr () { delete ptr; }
T & operator*() const { return *ptr; }
T* operator->() const { return ptr; }
T *& Ptr() { return ptr; }
T * Ptr() const { return ptr; }
void Reset(T * p = 0) { if (p != ptr) { delete ptr; ptr = p; } }
operator bool () { return ptr != 0; }
private:
AutoPtr (AutoPtr &) { ; }
AutoPtr & operator= (AutoPtr &) { ; }
};
2009-07-20 14:36:36 +06:00
}
2009-01-13 04:40:13 +05:00
#endif