【问题标题】:Converting pointers to boost::shared_ptr将指针转换为 boost::shared_ptr
【发布时间】:2013-10-01 19:03:18
【问题描述】:

我有以下代码:

#include <boost\interprocess\file_mapping.hpp>

file_mapping* fm = new file_mapping(FilePath,read_only);

如何将此行转换为使用boost::shared_ptr

每当我尝试shared_ptr&lt;file_mapping&gt; 时,我都会在右侧使用new 运算符得到编译错误。

【问题讨论】:

    标签: c++ boost shared-ptr smart-pointers


    【解决方案1】:

    shared_ptr&lt;T&gt; 的构造函数是explicit:您不希望有一个shared_ptr&lt;T&gt; 在完成后意外地获得您的T*delete 的所有权。因此,您需要从指针显式构造一个shared_ptr&lt;T&gt;,例如,

    boost::shared_ptr<file_mapping> ptr(new file_mapping(FilePath, read_only));
    

    ...甚至是类似的东西

    std::shared_ptr<file_mapping> ptr = std::make_shared<file_mapping>(FilePath, read_only);
    

    【讨论】:

      【解决方案2】:

      你可以使用:

      boost::shared_ptr<file_mapping> fm_ptr(new file_mapping(FilePath, read_only));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-22
        • 1970-01-01
        • 1970-01-01
        • 2017-10-08
        • 2011-05-07
        • 2010-10-11
        相关资源
        最近更新 更多