equal
deleted
inserted
replaced
|
1 #ifndef VMAILMGR__AUTO_DELETE__H__ |
|
2 #define VMAILMGR__AUTO_DELETE__H__ |
|
3 |
|
4 #include <sys/types.h> |
|
5 |
|
6 template<class T> |
|
7 class autodelete |
|
8 { |
|
9 private: |
|
10 T* ptr; |
|
11 public: |
|
12 autodelete() : ptr(0) { } |
|
13 autodelete(T* p) : ptr(p) { } |
|
14 ~autodelete() { if(ptr) delete ptr; } |
|
15 operator T*&() { return ptr; } |
|
16 operator const T*() const { return ptr; } |
|
17 const T* operator=(T* p) { return ptr = p; } |
|
18 T* operator->() { return ptr; } |
|
19 const T* operator->() const { return ptr; } |
|
20 T& operator[](size_t i) { return ptr[i]; } |
|
21 const T& operator[](size_t i) const { return ptr[i]; } |
|
22 bool operator!() const { return !ptr; } |
|
23 operator bool() const { return ptr; } |
|
24 }; |
|
25 |
|
26 #endif |