summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sptr.h14
-rw-r--r--src/tests/constsptr2.cpp30
2 files changed, 42 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();
diff --git a/src/tests/constsptr2.cpp b/src/tests/constsptr2.cpp
new file mode 100644
index 0000000..8ccb20c
--- /dev/null
+++ b/src/tests/constsptr2.cpp
@@ -0,0 +1,30 @@
1#include "sptr.h"
2
3void nonsptr()
4{
5 int a = 5;
6 int b = 10;
7 const int *p = &a;
8 p = &b;
9 printf("p = %d\n", (*p) );
10 //(*p)++;
11}
12
13void sptr()
14{
15 int a = 5;
16 int b = 10;
17 const SPtr<int> p = new int(a);
18 p = new int(b);
19 printf("p = %d\n", (*p) );
20 //(*p)++;
21}
22
23int main()
24{
25 printf("Non-sptr:\n");
26 nonsptr();
27 printf("sptr:\n");
28 sptr();
29}
30