将指针转换为提升::shared_ptr



我有以下代码:

#include <boostinterprocessfile_mapping.hpp>
file_mapping* fm = new file_mapping(FilePath,read_only);

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

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

shared_ptr<T> 的构造函数是explicit:你不希望一个shared_ptr<T>意外地获得你的T*的所有权,并在完成后delete它。因此,您需要从指针显式构造一个shared_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);

您可以使用:

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

相关内容

  • 没有找到相关文章

最新更新