使用しないでくださいauto_ptr
。unique_ptr
またはのいずれかを試してくださいshared_ptr
。いつ使用するかを説明するSutterは次のとおりです。
疑わしい場合は、デフォルトでunique_ptrを選択してください。必要に応じて、後でいつでもshared_ptrに移動変換できます。ただし、最初から共有所有権が必要であることがわかっている場合は、make_sharedを介してshared_ptrに直接アクセスしてください(以下の#2を参照)。
彼のブログ投稿からも:
3. auto_ptrとの取引は何ですか?
auto_ptrは、C++が移動セマンティクスを持つ前にunique_ptrを作成する勇敢な試みとして最も慈善的に特徴付けられます。
auto_ptrは非推奨になり、新しいコードでは使用しないでください。機会があれば、コードベースでauto_ptrをunique_ptrにグローバルに検索して置換してみてください。ほとんどの使用法は同じように機能し、(コンパイル時のエラーとして)公開したり、(サイレントに)修正したりする可能性があります。
したがって、メンバー宣言は次のように変更されます。
sf::Texture * tSpriteSheet;
に:
std::unique_ptr<sf::Texture> tSpriteSheet;
生のポインタを返すメンバー関数については、当然の選択ですunique_ptr
。クラスが移動できない場合は、を返すことはできません。したがって、次のいずれかを実行できます。
- 署名をそのまま保持する
- を返す
const& unique_ptr<T>
- オブジェクトへの参照を返します
ニーズに最適なものを選択してください。