Sto scrivendo una classe template che accetta come input un puntatore e lo memorizza. Il puntatore è destinato a puntare a un oggetto assegnato da un'altra classe e consegnato alla classe contenente questo.Un distruttore - dovrei usare cancellare o cancellare []?
Ora voglio creare un distruttore per questo contenitore. Come posso liberare la memoria puntata da questo puntatore? Non ho modo di sapere a priori se si tratta di un array o di un singolo elemento.
Sono una specie di nuovo in C++, quindi portami con me. Ho sempre usato C e Java è il mio linguaggio OO di scelta, ma tra il voler imparare il C++ e i requisiti di velocità del mio progetto, sono andato con il C++.
Sarebbe una buona idea cambiare il contenitore da un modello a un contenitore per una classe astratta in grado di implementare il proprio distruttore?
La risposta di JonH è giusta, quindi forse dovresti offrire modelli: uno per gli array, uno no. L'altra risposta è di evitare gli array e invece aspettarsi una singola istanza che possa o meno essere una raccolta corretta che ripulisce dopo se stessa, come il vettore <>. –
@Steven Sudit: Penso che dovresti fare una risposta a quel commento. –
Anche questo approccio potrebbe presentare problemi di threading: non è possibile eliminare qualcosa che è stato allocato in un thread diverso. – ChrisF