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
codice:
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
cliente.cpp
codice:
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;
}
allocstr.h //contiene la funzione d'allocazione
codice:
void alloca(char *&s,buffer bf){
s = new char[strlen(bf)];
s=bf;
}
Qualcuno sa dove mettere le mani?