Lorsque vous travaillez avec des classes tierces qui nécessitent un mécanisme de suppression spécifique, vous pouvez rencontrer des scénarios dans lesquels vous devez utilisez un suppresseur personnalisé avec les variables membres std::unique_ptr. Cet article fournit une solution pour y parvenir.
Imaginez que vous ayez une classe Foo avec une variable membre de type std::unique_ptr. Dans ce scénario, la classe tierce Bar dispose d'une fonction create() et destroy() dédiée pour la création et la destruction d'objets.
Dans une fonction autonome, vous pouvez utiliser un suppresseur personnalisé avec std::unique_ptr comme suit :
void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); }); ... }
Pour réaliser la même fonctionnalité lorsque vous travaillez avec des variables membres, voici la solution :
class Foo { std::unique_ptr<Bar, void(*)(Bar*)> ptr_; // ... public: Foo() : ptr_(create(), destroy) { /* ... */ } // ... };
Dans ce code :
Cette approche vous permet d'utiliser des des suppresseurs pour les variables membres std::unique_ptr de manière pratique, garantissant une bonne gestion des ressources, même pour les classes tierces.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!