diff --git a/README.md b/README.md index 1c71c05..59b47a3 100644 --- a/README.md +++ b/README.md @@ -574,7 +574,8 @@ TinySTL assert(cp1 == cp2 && cp2 == cp3); assert(*cp1 == *cp2 && *cp2 == *cp3 && *cp3 == "zouxiaohang"); - *cp2;//read + string s = *cp2;//read + assert(s == "zouxiaohang"); assert(cp1 == cp2 && cp2 == cp3); assert(*cp1 == *cp2 && *cp2 == *cp3 && *cp3 == "zouxiaohang"); diff --git a/TinySTL/COWPtr.h b/TinySTL/COWPtr.h index 9b22626..d758e1b 100644 --- a/TinySTL/COWPtr.h +++ b/TinySTL/COWPtr.h @@ -24,6 +24,7 @@ namespace TinySTL{ cow_ptr *cp_; }; } + //未能完全模拟原生指针操作,只供参考,详情见单元测试 template class cow_ptr{ public: diff --git a/TinySTL/Test/COWPtrTest.cpp b/TinySTL/Test/COWPtrTest.cpp index 4b711de..41bc178 100644 --- a/TinySTL/Test/COWPtrTest.cpp +++ b/TinySTL/Test/COWPtrTest.cpp @@ -33,7 +33,9 @@ namespace TinySTL{ assert(cp1 == cp2 && cp2 == cp3); assert(*cp1 == *cp2 && *cp2 == *cp3 && *cp3 == "zouxiaohang"); - *cp2;//read + //cp2->capacity(); change the cow_ptr -> 由于代理类代理的类型未知(T)造成的 + string s = *cp2;//read + assert(s == "zouxiaohang"); assert(cp1 == cp2 && cp2 == cp3); assert(*cp1 == *cp2 && *cp2 == *cp3 && *cp3 == "zouxiaohang");