将指针转换为boost :: shared_ptr

时间:2013-10-01 19:03:18

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

我有以下代码:

#include <boost\interprocess\file_mapping.hpp>

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

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

每当我尝试shared_ptr<file_mapping>时,我会在new运算符的右侧获得编译错误。

2 个答案:

答案 0 :(得分:2)

shared_ptr<T>的构造函数为explicit:您不希望shared_ptr<T>在完成后T*意外取得deleteshared_ptr<T>的所有权。因此,您需要从指针显式构造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);

......甚至是

之类的东西
{{1}}

答案 1 :(得分:1)

您可以使用:

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