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たくありません。したがって、ポインタからa を明示的に構築する必要があります。shared_ptr<T>T*deleteshared_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);
于 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 に答える