Si, ci avevo pensato, però essendo un esercizio didattico, non mi andava di semplificarmi la vita, tra l'altro in questo modo si capiscono più cose. Ad ogni modo nella nottata pare che abbia trovato una soluzione.
codice:
Persona::Persona()
{
char s [] = "";
Nome = new char;
Cognome = new char;
strcpy(Nome,s);
strcpy(Cognome,s);
Eta=0;
}
codice:
istream& operator >> (istream& in, Persona& P)
{
delete [] P.Nome;
delete [] P.Cognome;
char s1[MAX];
char s2[MAX];
cout << "Inserire Nome: "; in.getline(s1,MAX);
cout << "Inserire Cognome: "; in.getline(s2,MAX);
cout << "Inserire età: "; in >> P.Eta;
P.Nome = new char [strlen(s1)+1];
P.Cognome = new char [strlen(s2)+1];
strcpy(P.Nome,s1);
strcpy(P.Cognome,s2);
return in;
}
Ovvero, ogni volta che uso la cin dealloco P.Nome e P.Cognome e le rialloco secondo la lunghezza giusta, servendomi di s1 ed s2 che, si, hanno lunghezza MAX, ma vengono deallocate alla fine del blocco ogni volta. Che ne pensate?