Hallo liebe Community,
Ich habe mir eine Smart-Pointer Klasse für das COM geschrieben um mir die Arbeit mit DirectX zu erleichten.
Nun würde ich euch gerne fragen was man besser machen könnte, da es ja schon ziemlich wichtig ist, dass
die Klasse sich richtig verhält
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
template <typename T>
class ComPtr
{
private:
T* ptr;
public:
explicit ComPtr(T* ptr = 0) :
ptr(ptr)
{
}
ComPtr(const ComPtr<T>& copy) :
ptr(copy.ptr)
{
if (ptr)
ptr->AddRef();
}
~ComPtr()
{
release();
}
T* operator =(T* right)
{
if (right)
right->AddRef();
release();
ptr = right;
return *this;
}
void release()
{
if (ptr)
{
ptr->Release();
ptr = 0;
}
}
T* operator ->() const { return ptr; }
T& operator *() const { return *ptr; }
T** operator &() { return &ptr; }
operator T*() const { return ptr; }
operator bool() const { return ptr != 0; }
bool operator !() const { return ptr == 0; }
};
template <typename T>
bool operator ==(const ComPtr<T>& left, T* right)
{
return left.ptr == right;
}
template <typename T>
bool operator !=(const ComPtr<T>& left, T* right)
{
return left.ptr != right;
}
|
Ich hoffe mir sind keine Fehler entgangen beim editieren
Danke schon einmal