summaryrefslogtreecommitdiff
path: root/src/tests/constsptr2.cpp
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/tests/constsptr2.cpp
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 '')
-rw-r--r--src/tests/constsptr2.cpp30
1 files changed, 30 insertions, 0 deletions
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