aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/FbTk/RefCount.hh10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/FbTk/RefCount.hh b/src/FbTk/RefCount.hh
index 597f847..fe267e3 100644
--- a/src/FbTk/RefCount.hh
+++ b/src/FbTk/RefCount.hh
@@ -32,8 +32,9 @@ class RefCount {
32public: 32public:
33 RefCount(); 33 RefCount();
34 explicit RefCount(Pointer *p); 34 explicit RefCount(Pointer *p);
35 explicit RefCount(RefCount<Pointer> &copy);
36 RefCount(const RefCount<Pointer> &copy); 35 RefCount(const RefCount<Pointer> &copy);
36 template<typename Pointer2>
37 RefCount(const RefCount<Pointer2> &copy);
37 ~RefCount(); 38 ~RefCount();
38 RefCount<Pointer> &operator = (const RefCount<Pointer> &copy); 39 RefCount<Pointer> &operator = (const RefCount<Pointer> &copy);
39 RefCount<Pointer> &operator = (Pointer *p); 40 RefCount<Pointer> &operator = (Pointer *p);
@@ -50,6 +51,10 @@ private:
50 void decRefCount(); 51 void decRefCount();
51 Pointer *m_data; ///< data holder 52 Pointer *m_data; ///< data holder
52 unsigned int *m_refcount; ///< holds reference counting 53 unsigned int *m_refcount; ///< holds reference counting
54
55 // we need this for the template copy constructor
56 template<typename Pointer2>
57 friend class RefCount;
53}; 58};
54 59
55// implementation 60// implementation
@@ -60,7 +65,8 @@ RefCount<Pointer>::RefCount():m_data(0), m_refcount(new unsigned int(0)) {
60} 65}
61 66
62template <typename Pointer> 67template <typename Pointer>
63RefCount<Pointer>::RefCount(RefCount<Pointer> &copy): 68template <typename Pointer2>
69RefCount<Pointer>::RefCount(const RefCount<Pointer2> &copy):
64 m_data(copy.m_data), 70 m_data(copy.m_data),
65 m_refcount(copy.m_refcount) { 71 m_refcount(copy.m_refcount) {
66 incRefCount(); 72 incRefCount();