我有以下代码:
#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));