クラス内で std::unique_ptr メンバーを操作する場合、カスタム デリーターが必要とされる。これは、メンバー オブジェクトに特定のクリーンアップまたは破棄手順が必要な場合に特に関係します。
クラスにメンバー std::unique_ptr
スタンドアロン関数では、次のようにカスタム デリーターで std::unique_ptr を利用できます。
void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b) { destroy(b); }); ... }
さて、このアプローチを std::unique_ptr がクラスのメンバーとして使用される状況に適応させてみましょう。 Foo:
class Foo { private: std::unique_ptr<Bar, void(*)(Bar*)> bar_; ... public: Foo() : bar_(create(), destroy) { /* ... */ } // ... };
destroy 自体がデリーターとして機能するため、この実装ではラムダまたはカスタム デリーターが必要ないことに注意してください。これにより、カスタム破棄手順を利用しながら、バー メンバーの一意の所有権を管理するクリーンかつ簡潔な方法が可能になります。
以上が`std::unique_ptr` メンバー変数でカスタム デリーターを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。