Welche Wrapper-Klasse in C ++ sollte ich für die automatisierte Ressourcenverwaltung verwenden?

Ich bin ein C ++ Amateur. Ich schreibe einige Win32-API-Code und es gibt Handles und seltsam zusammengesetzt zugewiesene Objekte jede Menge. Ich habe mich gefragt, ob es eine Wrapper-Klasse gibt, die die Ressourcenverwaltung vereinfacht.

Wenn ich zum Beispiel Daten laden möchte, öffne ich eine Datei mitCreateFile() und hol aHANDLE. Wenn ich damit fertig bin, sollte ich anrufenCloseHandle() darauf. Aber für jede einigermaßen komplexe Ladefunktion gibt es Dutzende von möglichen Ausstiegspunkten, ganz zu schweigen von Ausnahmen.

Es wäre also großartig, wenn ich das Handle in eine Art Wrapper-Klasse einbinden könnte, die automatisch aufruftCloseHandle() Sobald die Ausführung den Geltungsbereich verlassen hat. Noch besser - es könnte eine Referenzzählung durchführen, damit ich es in andere Funktionen hinein- und herausgeben kann, und es würde die Ressource nur dann freigeben, wenn die letzte Referenz den Gültigkeitsbereich verlassen hätte.

Das Konzept ist einfach - aber gibt es so etwas in der Standardbibliothek? Ich verwende übrigens Visual Studio 2008 und möchte kein Framework von Drittanbietern wie Boost oder so anhängen.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage