Utilisation de suppresseurs personnalisés avec des membres std::unique_ptr
En programmation, l'utilisation d'un suppresseur personnalisé avec un membre std::unique_ptr peut offrir une plus grande contrôle de la destruction des objets. Cet article vise à répondre à la question de savoir comment incorporer un suppresseur personnalisé dans une structure de classe.
Considérons un scénario dans lequel une classe, Foo, contient un membre de type std::unique_ptr
void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); }); }
Cette approche permet de spécifier un suppresseur personnalisé à l'aide d'une expression lambda. La question se pose : existe-t-il un moyen de reproduire ce comportement lorsque std::unique_ptr est utilisé en tant que membre d'une classe ?
Solution : Supprimeur personnalisé pour un membre de classe
En supposant que créer et détruire sont des fonctions gratuites, la solution suivante peut être implémentée :
class Foo { std::unique_ptr<Bar, void(*)(Bar*)> ptr_; // ... public: Foo() : ptr_(create(), destroy) { /* ... */ } // ... };
Dans ce scénario, le suppresseur personnalisé est fourni directement dans la définition de classe. La fonction destroy est utilisée comme suppresseur, éliminant ainsi le besoin d'une expression lambda. Cette approche garantit que l'objet Bar est correctement détruit lorsque l'objet Foo sort de la portée.
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!