Ciao a tutti ragazzi!
vi espongo subito il mio problema, ho la seguente classe:

class Fattura{
char *nome;
char *cognome;
float iva;
vector<float> prezzo;
vector<int> quantita;
vector<char*> descrizione;
public:
Fattura();
~Fattura ();
Fattura (const Fattura &f);
float importoTotale()const;

friend bool operator < (const Fattura &c1,const Fattura &c2);

friend bool operator > (const Fattura &c1,const Fattura &c2);

void setNome(char *n);
void setCognome(char *c);
void setIva(float e);
friend ostream &operator<<(ostream &out, Fattura &r);
friend istream &operator>>(istream &in, Fattura &r);
};

Di questa classe non ho ben capito come fare il costruttore di copia ( Fattura (const Fattura &f); ) ma solo dei 3 vector: prezzo, quantita e descrizione.
E inoltre vorrei capire se anzichè vector fossero stati delle list (prezzo, quantita e descrizione) cosa sarebbe cambiato nel costruttore di copia?

Ho trovato un esempio in cui il costruttore viene fatto in questo modo (adesso considero solo un vector ma è uguale per tutti), ma non so se è giusto:

prezzo.resize(f.prezzo.size());
copy(f.prezzo.begin(), f.prezzo.end(), prezzo.begin());

Un secondo problema mi si pone quando faccio l'istream:
(anche qui non so se per i vettori si fa così..)

istream &operator>>(istream &in, Fattura &r)
{

char temp[100];
int app, num;

in>>temp;
r.setNome(temp);
in>>temp;
r.setCognome(temp);

in>>app;
r.setIva(app);

in>>num;
r.prezzo.resize(num);
for(int i=0; i<num; i++){
in>>r.prezzo[i];
}
in>>num;
r.quantita.resize(num);
for(int i=0; i<num; i++){
in>>r.quantita[i];
}
in>>num;
r.descrizione.resize(num);
for(int i=0; i<num; i++){
in>>(r.descrizione[i]);
}

return in;
}

P.S: se fossero invece list come si dovrebbe fare?

Ah, dimenticavo..non ci sono errori in compilazione.. ma quando lo eseguo, ad es. nel main faccio un semplice caricamento da file.txt mi appare solo la schermata nera vuota.

Grazie 1000 in anticipo!