特定の削除メカニズムを必要とするサードパーティ クラスを使用する場合、次の操作が必要なシナリオが発生する可能性があります。 std::unique_ptr メンバー変数を持つカスタム デリーターを使用します。この記事では、これを達成するための解決策を提供します。
std::unique_ptr 型のメンバー変数を持つクラス Foo があると想像してください。このシナリオでは、サードパーティ クラス Bar には、オブジェクトの作成と破棄のための専用の create() 関数と destroy() 関数があります。
スタンドアロン関数では、以下を使用できます。次のような std::unique_ptr を持つカスタム デリーター:
void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); }); ... }
メンバー変数を操作するときに同じ機能を実現するには、次の解決策があります:
class Foo { std::unique_ptr<Bar, void(*)(Bar*)> ptr_; // ... public: Foo() : ptr_(create(), destroy) { /* ... */ } // ... };
このコード内:
これこのアプローチにより、std::unique_ptr メンバー変数のカスタム デリーターを便利に利用できるようになり、サードパーティ クラスであっても適切なリソース管理が保証されます。
以上が`std::unique_ptr` メンバー変数でカスタム デリーターを使用する方法 「」の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。