aboutsummaryrefslogtreecommitdiff
path: root/src/sptr.h
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2007-04-10 13:43:05 +0000
committerMike Buland <eichlan@xagasoft.com>2007-04-10 13:43:05 +0000
commit79ee50a1cf4415e214298bf696aa3fc44e308d02 (patch)
treedb6ddd49e0671f1c9a8f72147b1e3314182e96e7 /src/sptr.h
parent531761d77331915b3e6495d10e03191ba10c04d2 (diff)
downloadlibbu++-79ee50a1cf4415e214298bf696aa3fc44e308d02.tar.gz
libbu++-79ee50a1cf4415e214298bf696aa3fc44e308d02.tar.bz2
libbu++-79ee50a1cf4415e214298bf696aa3fc44e308d02.tar.xz
libbu++-79ee50a1cf4415e214298bf696aa3fc44e308d02.zip
David had it half right...to make it work like something that's actually a const
pointer he's right, the pointer needs to be rebindable, but for a: const int *p; p can be changed, but not what p points to. I've added the rest of the operators in sptr that should accomplish this, and a test that actually tests the correctness of SPtr used this way against a normal pointer, both tests check out 100%, hopefully this dosen't break anything, but if it should act like a pointer, this is how to do it. (I totally forgot that const pointers were rebindable).
Diffstat (limited to 'src/sptr.h')
-rw-r--r--src/sptr.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/sptr.h b/src/sptr.h
index 9a6a2d6..3304501 100644
--- a/src/sptr.h
+++ b/src/sptr.h
@@ -45,16 +45,26 @@ public:
45 return *pRefCnt; 45 return *pRefCnt;
46 } 46 }
47 47
48 T *operator->() const 48 const T *operator->() const
49 { 49 {
50 return pData; 50 return pData;
51 } 51 }
52 52
53 T *operator*() const 53 const T &operator*() const
54 {
55 return *pData;
56 }
57
58 T *operator->()
54 { 59 {
55 return pData; 60 return pData;
56 } 61 }
57 62
63 T &operator*()
64 {
65 return *pData;
66 }
67
58 SPtr<T> operator=( const SPtr<T> &src ) 68 SPtr<T> operator=( const SPtr<T> &src )
59 { 69 {
60 decCount(); 70 decCount();