QWT API (中文)
7.3.0
Qt绘图库 - 中文API文档
载入中...
搜索中...
未找到
src
plot3d
qwt3d_autoptr.h
1
#ifndef QWT3D_AUTOPTR_H
2
#define QWT3D_AUTOPTR_H
3
4
namespace
Qwt3D
5
{
6
17
template
<
typename
T >
18
class
ClonePtr
19
{
20
public
:
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
61
private
:
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
Qwt3D::ClonePtr
Simple auto pointer providing deep copies for raw pointer
Definition
qwt3d_autoptr.h:19
制作者
1.9.8