A causa dei ben noti problemi con la chiamata di metodi virtuali da parte di costruttori e distruttori, di solito finisco con classi che necessitano di un metodo di setup finale da chiamare subito dopo il loro costruttore, e un metodo pre-teardown da chiamare solo prima della loro distruttore, come questo:Esiste un modo automatico per implementare le chiamate al metodo virtuale post-costruttore e pre-distruttore?
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;
questo funziona, ma porta con sé il rischio che il chiamante dimenticare di chiamare uno o entrambi questi metodi al momento opportuno.
Quindi la domanda è: c'è un modo in C++ per ottenere quei metodi da chiamare automaticamente, quindi il chiamante non deve ricordarsi di chiamarli? (Immagino che non ci sia, ma ho pensato di chiederlo comunque nel caso ci sia un modo intelligente per farlo)
Che problema hai con distruttori? – peterchen
Forse dovresti descrivere il tuo problema reale, forse in realtà non hai * bisogno * di queste chiamate ... – peterchen
se hai "comunemente" bisogno di chiamare metodi virtuali da medici o da medici, sembra che tu abbia un grosso problema di progettazione. Puoi dare un esempio di classe in cui è necessario? Molto probabilmente, c'è una soluzione più semplice. (Come al solito, mi aspetto che RAII risolva il problema. Delega il problema su o più variabili membro, con i propri operatori/medici che eseguono ciascuno la propria parte di inizializzazione/smontaggio. – jalf