Shodan, anche se il programma ancora non funziona bene (perchè non mi ci sono dedicato molto finora), ti ringrazio per i tuoi suggerimenti ed il tempo che mi dedichi.

Vorrei chiederti ancora una cosa, i due vettori prezzo e quantita mi hai detto che posso farli così nel costruttore di copia:

codice:
prezzo= f.prezzo;                                           
quantita=f.quantita;
invece il vettore di char* no? e se no, perchè?

E senti, visto che nel costruttore di copia si può evitare di far cicli per Vector e List, si possono evitare anche quando si scrive l'ostream? cioè qui:

codice:
ostream &operator<<(ostream &out, Fattura &r)  
{ out<<r.nome<<"  "<<r.cognome<<"  "<<r.iva<<" ";      
for(int i=0; i<(int)r.prezzo.size(); i++)      
{ out<<r.prezzo[i]<<" ";   cout<<endl;     } 
for(int j=0; j<(int)r.quantita.size(); j++) 
{ out<<r.quantita[j]<<" ";   cout<<endl;     }
for(int z=0; z<(int)r.descrizione.size(); z++) 
{  out<<(r.descrizione[z])<<" ";  cout<<endl; }
return out; }
Grazie ancora cmq..

P.S: si, il prof è proprio matto..