Mi sono trovato per la prima volta a dover implementare un costruttore di copia, dato che la classe per cui lo devo fare è simile a quella che qui riporto
Ora, io l'ho implementato in questo modo, ma chiedo se si può fare in un modo migliore, in quanto mi sembra piuttosto macchinoso il sistema, ma non ho trovato altra strada.codice:class Prova { public: //metodi che servono //... //costruttore di copia Prova(const Prova& da_copiare); private: //altri dati membro //... //membro di tipo puntatore TipoPuntatore* mPuntatore; };
Con qualche riga di codice, ecco cosa ho fatto
Graziecodice:Prova::Prova(const Prova& da_copiare) { //1) copio in un puntatore temporaneo il puntatore dell'oggetto da_copiare TipoPuntatore* puntatore_temporaneo=da_copiare.mPuntatore; //2) ricavo i dati puntati dal puntatore dato membro dell'oggetto che deve essere copiato TipoDatiDaCopiare dati_temporanei=puntatore_temporaneo->getDati(); //3) creo l'istanza del dato membro puntatore del nuovo oggetto partendo dai dati ricavati mediante il puntatore temporaneo mPuntatore=new TipoPuntatore(TipoDatiDaCopiare dati_temporanei); }