Ich habe einige C-API, die Objekterstellung und -zerstörung behandelt, bietet es: createObject(...)
und destroy(...)
. Ich möchte es in modernere Konstruktions-/Zerstörungsmechanismen integrieren und sie mit intelligenten Zeigern verwenden. Ich fürchte, irgendwann werde ich vergessen, das Objekt zu zerstören, oder eine Ausnahme wird eintreten.Wrapping C erstellen und zerstören Funktionen mit einem intelligenten Zeiger
Ich bin bewusst, benutzerdefinierte Deleter-Funktion für shared_ptr
, aber ich kann nicht explizit new
aufrufen, weil createOjbect
Funktion behandelt Initialisierung.
Kann ich STL Smartpointer in dieser Situation verwenden? Muss ich eine Klasse mit Initialisierung im Konstruktor, Zerstörung im Destruktor und Referenzzählung in dieser Situation von Grund auf neu implementieren?
Warum brauchen Sie Ref Counter in Ihrer Klasse? Rufen Sie einfach createObject im Konstruktor auf, importiere den Destruktor und stellen Sie eine statische Factory-Funktion bereit, die den intelligenten Zeiger auf Ihre Klasse zurückgibt. Der intelligente Zeiger wird mit dem Refcounter-Teil umgehen.Wenn Ihre Klasse endgültig zerstört ist, wird sie automatisch destroy aufrufen. –
Was bewirkt createObject? Was braucht es? Abhängig von Ihrer Antwort kann es Verbesserungen geben. – Yakk