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