0

我有以下代码:

#include <boost\interprocess\file_mapping.hpp>

file_mapping* fm = new file_mapping(FilePath,read_only);

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

每当我尝试时shared_ptr<file_mapping>,我都会在操作员的右侧得到编译错误new

4

2 回答 2

2

的构造函数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);
于 2013-10-01T19:08:08.490 回答
1

您可以使用:

boost::shared_ptr<file_mapping> fm_ptr(new file_mapping(FilePath, read_only));
于 2013-10-01T19:04:32.447 回答