Ho una classe con 2 variabili char *, quando vado a inizializzarle tramite l'operatore >> mi stampa una stringa che non corrisponde a quella che inserisco. Tuttavia, quando stampo C.nome all'interno della funzione stessa, la stringa è corretta, è nel main che viene cambiata. Questo succede solo con le var char *, l'int per esempio non viene cambiato.
cliente.h
cliente.cppcodice:class cliente{ private: char * nome; char * cognome; int eta; int test[3]; //overload << e >> friend ostream& operator<<(ostream &,const cliente &); friend istream& operator>>(istream &,cliente &); public: //funzioni varie
allocstr.h //contiene la funzione d'allocazionecodice:istream& operator>>(istream& in,cliente& C){ buffer app; char * capp; cout << "Inserisci nome:\n"; in >> app; alloca(capp,app); C.nome=capp; cout << capp << endl; cout << C.nome << endl; cout << "Inserisci cognome:\n"; in >> app; alloca(capp,app); C.cognome=capp; cout << "Inserisci eta:\n"; in >> C.eta; return in; }
Qualcuno sa dove mettere le mani?codice:void alloca(char *&s,buffer bf){ s = new char[strlen(bf)]; s=bf; }

Rispondi quotando