PDA

View Full Version : [c++] Copyconstructor di oggetto con puntatori


abestos
02-05-2010, 14:45
Sto definendo un grafo composto dalle seguenti classi:

classe Grafo con i seguenti attributi: (ho tralasciato gli attributi semplici come gli indici)

Nodo** nodi; // array di puntatori ai vari nodi del grafo
Arco** archi; // array di puntatori ai vari archi del grafo

La classe Nodo ha i seguenti attributi:

Arco** archiVicini; // array di puntatori agli archi che escono dal nodo

Ora non so proprio come definire il copyconstructor della classe Grafo e non so se è necessario prima definire un copyConstructor per la classe Nodo e Arco.

Grafo(const Grafo &other) {
index = other.getIndex();
index2 = other.getIndex2();
capacita1 = other.getCapacita1();
capacita2 = other.getCapacita2();
nodi= new Nodo*[capacita1];
archi= new Arco*[capacita2];
for (int i=0; i<index; i++){

nodi[i] = other.nodi[i];
}
for(int i=0; i<index2; i++){
archi[i]=other.archi[i];
}

}

Il problema è che così i due grafi condividono nodi e archi visto che copio semplicemente il puntatore. Esiste un modo per fare una copia di nodi e archi senza definire un copyconstructor (che non riesco a definire visto che anche queste classi hanno strutture dati complesse) di Nodo e Arco?
Purtroppo non posso usare la funzione aggiungiNodo perchè risalire ai parent dei vari nodi per poterli aggiungere sarebbe molto complesso e oneroso.

abestos
03-05-2010, 00:14
Come non detto, ho trovato una soluzione :)