ciao a tutti. ho una classe persona in cui c'è un elemento indirizzo, che è una struttura a parte.
la struct indirizzo è
codice:
#include <iostream>
#include <cstring>
using namespace std;
struct indirizzo {
char *via;
char *paese;
int cap;
indirizzo(char*vi,char*paes,int ca);
indirizzo(const indirizzo &obj);
~indirizzo();
};
indirizzo::indirizzo(char*vi,char*paes,int ca) {
via=new char[strlen(vi)+1];
if(!via)
exit(1);
strcpy(via,vi);
paese=new char[strlen(paes)+1];
if(!paese)
exit(1);
strcpy(paese,paes);
cap=ca;
}
indirizzo::indirizzo(const indirizzo &obj) {
via=new char[strlen(obj.via)+1];
if(!via)
exit(1);
strcpy(via,obj.via);
paese=new char[strlen(obj.paese)+1];
if(!paese)
exit(1);
strcpy(paese,obj.paese);
cap=obj.cap;
}
indirizzo::~indirizzo() {
if(via)
delete [] via;
if(paese)
delete [] paese;
}
mentre la class persona è
codice:
class persona {
char *nome;
char *cognome;
indirizzo i;
public:
persona(char*nom,char*cognom,char*vi,char*paes,int ca);
persona(const persona &obj);
~persona();
};
persona::persona(char*nom,char*cognom,char*vi,char*paes,int ca) {
nome=new char[strlen(nom)+1];
if(!nome)
exit(1);
strcpy(nome,nom);
cognome=new char[strlen(cognom)+1];
if(!cognome)
exit(1);
strcpy(cognome,cognom);
}
persona::persona(const persona &obj) {
nome=new char[strlen(obj.nome)+1];
if(!nome)
exit(1);
strcpy(nome,obj.nome);
cognome=new char[strlen(obj.cognome)+1];
if(!cognome)
exit(1);
strcpy(cognome,obj.cognome);
i.via=new char[strlen(obj.i.via)+1];
if(!i.via)
exit(1);
strcpy(i.via,obj.i.via);
i.paese=new char[strlen(obj.i.paese)+1];
if(!i.paese)
exit(1);
strcpy(i.paese,obj.i.paese);
i.cap=obj.i.cap;
}
persona::~persona() {
if(nome)
delete [] nome;
if(cognome)
delete [] cognome;
}
mi chiedo: come fare passare i parametri al costruttore di indirizzo?
inoltre, nel costruttore di copia di persona faccio bene ad accedere ai dati di indirizzo direttamente con i.via, o è necessario sperificare nell'intestazione qualcosa tipo :i(via,paese,cap)?
e nel distruttore di persona come faccio partire il distruttore di indirizzo?
grazie..ciao