我有以下代码:
#include <boost\interprocess\file_mapping.hpp>
file_mapping* fm = new file_mapping(FilePath,read_only);
如何将此行转换为使用boost::shared_ptr
?
每当我尝试时shared_ptr<file_mapping>
,我都会在操作员的右侧得到编译错误new
。
我有以下代码:
#include <boost\interprocess\file_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>
从指针显式构造 a,例如,
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));