我有以下代码:
#include <boost\interprocess\file_mapping.hpp>
file_mapping* fm = new file_mapping(FilePath,read_only);
如何将此行转换为使用boost::shared_ptr
?
每当我尝试shared_ptr<file_mapping>
时,我会在new
运算符的右侧获得编译错误。
答案 0 :(得分:2)
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);
......甚至是
之类的东西{{1}}
答案 1 :(得分:1)
您可以使用:
boost::shared_ptr<file_mapping> fm_ptr(new file_mapping(FilePath, read_only));