【问题标题】:Using a unique_ptr without C++11 [duplicate]在没有 C++11 的情况下使用 unique_ptr [重复]
【发布时间】: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_ptrshared_ptr 非常相似,只是它假定一个所有者,因此指针被移动而不是被复制。
  • 请注意查看为更新的 Boost 版本更新的此答案:stackoverflow.com/a/28193068/4213662

标签: c++ c++11 raii


【解决方案1】:

好吧,boost::movelib::unique_ptrBoost.Move library 的一部分,它提供“C++03 和 C++11 编译器的可移植移动语义”。由于unique_ptr 显然需要移动语义,这看起来是您的最佳选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-26
    • 2011-06-16
    • 2020-05-04
    • 2015-12-05
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多