これがVS2015で動作するかどうか教えてください。char []またはint []でmake_sharedを使用する
shared_ptr< char> buffer(make_shared< array< char,10>>() , [] (char *p){delete[] p; });
または
shared_ptr< char> buffer(make_shared< array< int,10>>() ,default_delete< int[]>());
これがVS2015で動作するかどうか教えてください。char []またはint []でmake_sharedを使用する
shared_ptr< char> buffer(make_shared< array< char,10>>() , [] (char *p){delete[] p; });
または
shared_ptr< char> buffer(make_shared< array< int,10>>() ,default_delete< int[]>());
のVisual Studio 2015 C++ 17標準をサポートしていません。 C++ 17以前の標準では、std::shared_ptr<T[]>
ポインタを持つことはできません。しかし、C++ 17でも、std::make_shared関数は配列型をサポートしていないので、代わりにboost::make_sharedを使用する必要があります。別の方法は、アレイタイプをサポートするstd::make_uniqueと組み合わせてユニークポインタを使用することです。 STDの
存在::アレイ用unique_ptrを、あなたにだけ 知的関心のあるべき、理由:これは、再び彼の「有効 現代C++」本の中でスコットマイヤーズで指摘したように、良いアイデアではないかもしれませんstd :: array、std :: vector、および std :: stringは、生の配列 よりもデータ構造の選択が事実上常に優れています。
あなたは[この回答を見ることができます](https://stackoverflow.com/questions/13061979/shared-ptr-to-an-array- @ Baum mit Augenによって私に示唆されたように、私は使用すべきである(13062069#13062069)。 – Ron
その答えは明示的な新しいものを使用し、私の問題はそれを取り除くことです。 std :: shared_ptr
試してみてください。あなたが便利なコピーを持っていない場合は、オンラインコンパイラがあります... – xaxxon