Ok, il costruttore di copia è giusto.. adesso funziona il programma ma c'è sempre qualche problema e credo sia dovuto agli stream perchè se il file input.txt è solo fatto ad es. così:

mario rossi 20 3 20 2 mouse 20 2 tastiera 13 2 disco

viene caricato e visualizzato bene sullo schermo, invece se lo faccio così (come dovrebbe essere):

mario rossi 20 3 20 2 mouse 20 2 tastiera 13 2 disco
marco bianchi 15 2 150 5 stampante 700 3 pc
roberto biagi 20 1 300 4 ipod
biagio antonacci 20 3 20 1 cavo 20 1 software 440 2 servizi
giuseppe grillo 20 2 8000 1 service 4000 1 catering

non funziona nulla, mi appare ancora solo la schermata nera..

Adesso inserisco gli stream, così magari potete vedere se c'è qualcosa ke non va:



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; }
L'istream l'ho modificato così e va bene sia se ho Vector che List:

codice:
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);           
   vector<float>::iterator p=r.prezzo.begin();  
    while(p!=r.prezzo.end())      
{  float app; 
    in>>app;          
  r.prezzo.push_back(app);
      }          
vector<int>::iterator s=r.quantita.begin();
while(s!=r.quantita.end())     
 {  int app;         
     in>>app;                 
     r.quantita.push_back(app);       
}      
vector<char*>::iterator t=r.descrizione.begin();
while(t!=r.descrizione.end()) 
{  char* app;         
    in>>app;                 
    r.descrizione.push_back(app);        
}   	return in; 
}
E infine gli stream di In e Out per la List:



codice:
ostream &operator<<(ostream &o, list<Fattura> &l) 
{   list<Fattura>::iterator p = l.begin();     
while(p != l.end())
{   o << *p<<" ";        
p++;      }      
cout<<endl;      
return o; }  

istream &operator>>(istream &i, list<Fattura> &l) 
{ while(!i.eof())        
 { Fattura app;       
 i >> app;         
if(!i.eof())        
{  l.push_back(app);   
     }         
 }    return i; 
}
P.S: nel main non faccio altro che questo:
codice:
int main(int argc, char** argv) 
{   list<Fattura> l1;      
    ifstream in;   
    in.open("input.txt", ios::in);   
    in>>l1;   
    in.close();    
    cout<<l1;                                                  
system("PAUSE");	     
return (EXIT_SUCCESS);
}
Ragazzi grazie mille cmq per l'attenzione e il tempo che mi dedicate..