Ho bisogno di impostare una struttura di ereditarietà di classe, in cui la classe di base astratta contiene solo variabili membro (ma nessun metodo membro). I metodi membri verranno definiti dalle classi derivate. Quindi, quello che mi serve è questo post: Making a class abstract without any pure virtual methodscostruttore protetto contro puro distruttore virtuale
Dalla cima 2 risposte lì, ho capito ci sono 2 modi per realizzarlo:
- rendere il distruttore pura virtuale.
- Proteggi il costruttore.
Sono curioso di sapere la differenza tra i due approcci. Ci sono scenari in cui uno dovrebbe essere preferito all'altro (o forse alcune situazioni speciali in cui si dovrebbe lavorare ma non l'altro)? Ci ho pensato e non ho potuto pensare a niente.
Ho cercato tra le risposte su alcuni post qui (Is there a use for making a protected destructor virtual?, C++: Protected Class Constructor, Should an abstract class' destructor be pure virtual?) per provare a mettere insieme qualcosa, ma non sono riuscito a concludere.
Questo * veramente * non risponde alla domanda dell'OP. Un distruttore virtuale non puro può essere utilizzato con il caso del costruttore protetto e il codice di esempio mostrerà un comportamento definito. Stai parlando di un problema correlato, ma ortogonale. –