blob: fe705abc7491e656a99dc12b519105088954f2b3 (
plain) (
blame)
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
|
#pragma once
template <class T>
class Counted {
T elem;
unsigned count;
public:
T& GetElem();
unsigned GetCount();
Counted& operator++();
Counted operator++(int);
Counted& operator--();
Counted operator--(int);
Counted& operator+=(int countChange);
Counted& operator-=(int countChange);
};
template <class T>
T& Counted<T>::GetElem() {
return elem;
}
template <class T>
unsigned Counted<T>::GetCount() {
return count;
}
template <class T>
Counted<T>& Counted<T>::operator++() {
++count;
return *this;
}
template <class T>
Counted<T> Counted<T>::operator++(int) {
count++;
return *this;
}
template <class T>
Counted<T>& Counted<T>::operator--() {
--count;
return *this;
}
template <class T>
Counted<T> Counted<T>::operator--(int) {
count--;
return *this;
}
template <class T>
Counted<T>& Counted<T>::operator+=(int countChange) {
count += countChange;
return *this;
}
template <class T>
Counted<T>& Counted<T>::operator-=(int countChange) {
count -= countChange;
return *this;
}
|