QWT API (中文) 7.3.0
Qt绘图库 - 中文API文档
载入中...
搜索中...
未找到
qwt3d_autoptr.h
1#ifndef QWT3D_AUTOPTR_H
2#define QWT3D_AUTOPTR_H
3
4namespace Qwt3D
5{
6
17template< typename T >
19{
20public:
21 // Standard ctor
22 explicit ClonePtr(T* ptr = nullptr) : rawptr_(ptr)
23 {
24 }
25 // Dtor (calls T::destroy)
26 ~ClonePtr()
27 {
28 destroyRawPtr();
29 }
30
31 // Copy ctor (calls (virtual) clone())
32 ClonePtr(ClonePtr const& val)
33 {
34 rawptr_ = val.rawptr_->clone();
35 }
36
37 // Assignment in the same spirit as copy ctor
38 ClonePtr< T >& operator=(ClonePtr const& val)
39 {
40 if (this == &val)
41 return *this;
42
43 destroyRawPtr();
44 rawptr_ = val.rawptr_->clone();
45
46 return *this;
47 }
48
49 // Pointer-like access operator
50 T* operator->() const
51 {
52 return rawptr_;
53 }
54
55 // Dereferencing operator
56 T& operator*() const
57 {
58 return *rawptr_;
59 }
60
61private:
62 T* rawptr_;
63 void destroyRawPtr()
64 {
65 if (rawptr_)
66 rawptr_->destroy();
67 rawptr_ = nullptr;
68 }
69};
70
71} // ns
72
73#endif // QWT3D_AUTOPTR_H
Simple auto pointer providing deep copies for raw pointer
Definition qwt3d_autoptr.h:19