一个小测试:在std::list容器中使用shared_ptr,演示了对象的添加与删除的多种方式:通过原始指针(raw pointer)、智能指针(smart pointer)、迭代器(iterator)、boost::enable_shared_from_this等。例子中的代码只做演示用,实际使用时只用其中的部分做法即可,视应用程序的需要而定。在VS2005及boost_1_37_0下编译运行通过。
简要说明:
- #1、有重复删除问题,解决的方法是#3,需配合boost::enable_shared_from_this.
- #2、尚未使用shared_ptr,还不能从内部的weak_ptr获取shared_ptr。
- #3、解决了问题#1