Bei der Arbeit mit Klassen von Drittanbietern, die einen bestimmten Löschmechanismus erfordern, kann es zu Situationen kommen, in denen dies erforderlich ist Verwenden Sie einen benutzerdefinierten Löscher mit std::unique_ptr-Mitgliedsvariablen. Dieser Artikel bietet eine Lösung, um dies zu erreichen.
Stellen Sie sich vor, Sie haben eine Klasse Foo mit einer Mitgliedsvariablen vom Typ std::unique_ptr. In diesem Szenario verfügt die Drittanbieterklasse Bar über eine dedizierte create()- und destroy()-Funktion zum Erstellen und Zerstören von Objekten.
In einer eigenständigen Funktion können Sie verwenden ein benutzerdefinierter Löscher mit std::unique_ptr wie folgt:
void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); }); ... }
Um das zu erreichen gleiche Funktionalität beim Arbeiten mit Mitgliedsvariablen, hier ist die Lösung:
class Foo { std::unique_ptr<Bar, void(*)(Bar*)> ptr_; // ... public: Foo() : ptr_(create(), destroy) { /* ... */ } // ... };
In diesem Code:
Mit diesem Ansatz können Sie benutzerdefinierte verwenden Löschfunktionen für std::unique_ptr-Mitgliedsvariablen, um eine ordnungsgemäße Ressourcenverwaltung auch für Klassen von Drittanbietern sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie verwende ich benutzerdefinierte Löscher mit „std::unique_ptr'-Mitgliedsvariablen? „. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!