Gibt es eine automatisierte Möglichkeit, virtuelle Methodenaufrufe nach dem Konstruktor und vor dem Destruktor zu implementieren?

Aufgrund der bekannten Probleme beim Aufrufen virtueller Methoden aus Konstruktoren und Destruktoren habe ich häufig Klassen, bei denen eine Final-Setup-Methode direkt nach dem Konstruktor und eine Pre-Teardown-Methode direkt vor dem Konstruktor aufgerufen werden muss Destruktor, wie folgt:

MyObject * obj = new MyObject;
obj->Initialize();   // virtual method call, required after ctor for (obj) to run properly
[...]
obj->AboutToDelete();  // virtual method call, required before dtor for (obj) to clean up properly
delete obj;

Dies funktioniert, birgt jedoch das Risiko, dass der Anrufer vergisst, eine oder beide dieser Methoden zu den entsprechenden Zeiten aufzurufen.

Die Frage ist also: Gibt es in C ++ eine Möglichkeit, diese Methoden automatisch aufzurufen, sodass sich der Aufrufer nicht daran erinnern muss, sie aufzurufen? (Ich vermute, es gibt keine, aber ich dachte, ich würde trotzdem fragen, nur für den Fall, dass es eine clevere Möglichkeit gibt, dies zu tun.)

Antworten auf die Frage(9)

Ihre Antwort auf die Frage