about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--hkutil/recptr.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/hkutil/recptr.h b/hkutil/recptr.h index c39e9d8..09c3113 100644 --- a/hkutil/recptr.h +++ b/hkutil/recptr.h
@@ -14,6 +14,8 @@ namespace hatkirby {
14 class recptr { 14 class recptr {
15 public: 15 public:
16 16
17 recptr() = default;
18
17 recptr(T* ptr) : ptr_(ptr) 19 recptr(T* ptr) : ptr_(ptr)
18 { 20 {
19 } 21 }
@@ -24,8 +26,11 @@ namespace hatkirby {
24 } 26 }
25 27
26 recptr(const recptr& other) 28 recptr(const recptr& other)
27 : ptr_(new T(*other.ptr_))
28 { 29 {
30 if (other.ptr_)
31 {
32 ptr_ = new T(*other.ptr_);
33 }
29 } 34 }
30 35
31 recptr(recptr&& other) 36 recptr(recptr&& other)
@@ -38,9 +43,14 @@ namespace hatkirby {
38 if (ptr_) 43 if (ptr_)
39 { 44 {
40 delete ptr_; 45 delete ptr_;
46
47 ptr_ = nullptr;
41 } 48 }
42 49
43 ptr_ = new T(*other.ptr_); 50 if (other.ptr_)
51 {
52 ptr_ = new T(*other.ptr_);
53 }
44 54
45 return *this; 55 return *this;
46 } 56 }
@@ -79,6 +89,11 @@ namespace hatkirby {
79 return ptr_; 89 return ptr_;
80 } 90 }
81 91
92 operator bool() const
93 {
94 return (ptr_ != nullptr);
95 }
96
82 private: 97 private:
83 98
84 T* ptr_ = nullptr; 99 T* ptr_ = nullptr;