【发布时间】:2015-05-26 06:55:10
【问题描述】:
我想将指向d 的指针从一个容器传递到下一个容器。在任何时候都不会有超过一个指针的所有者(或d 本身)。我希望当最后一个指针超出范围时,delete d 会自动调用。
在 C++11 中,我会使用 unique_ptr 来执行此操作。但是,唉,我不能使用 C++11。 C++ 中最好的等价物是什么?升压就好了。或者,如果没有,处理这个问题的适当方法是什么?
【问题讨论】:
-
" 我希望当最后一个指针超出范围时,自动调用 delete d。"这听起来不像
unique_ptr的功能,而更像shared_ptr的功能。 -
shared_ptr在 C++11 中也是新的。所以无论哪种方式,如果你没有 C++11 编译器,你必须使用 Boost 或类似的第三方库,或者编写自己的智能指针。 -
uinque_ptr与shared_ptr非常相似,只是它假定一个所有者,因此指针被移动而不是被复制。 -
请注意查看为更新的 Boost 版本更新的此答案:stackoverflow.com/a/28193068/4213662