一個小測試:在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