Oppure

Loading
16/08/11 9:01
el cuba libre
ciao a tutti
sto scrivendo il mio primo programma in c++ e ho qualche problema col passaggio di una stringa dal main a um metodo della classe. il problema è che passo solo la prima lettera del nome, ecco il main
char nome,cognome,*ptr;
ptr=&nome;
cout<<"inserisci nome utente"<<endl;
cin>>nome;
istanza[i].impostanome(ptr);

mentre il metodo ha questa "intestazione"
void impostanome(char *Clientname="")

qualcuno mi può aiutare?
grazie mille
aaa
16/08/11 9:34
comina8
Prima di tutto devi dichiarare una stringa o un array di caratteri.
char nome è un solo carattere e ptr (che punta ad una cella di memoria occupata da un carattere) diventa anch'esso un carattere...

void funzione(char *Stringa);
...
char caratteri[100];
cout<<"Inserisci una stringa";
cin>>caratteri;
funzione(caratteri);


Non ho capito nel prototipo del metodo come mai quel ' ="" '...
aaa
16/08/11 9:35
lorenzo
Dichiarando char nome crei una variabile carattere, non stringa. Le stringhe si dichiarano come array di caratteri, quindi char *nome. Per questo la cin ti memorizza solamente la prima lettera.

Dovresti fare così:

char *nome = new char[255];
cin >> nome;
istanza[i].impostanome(nome);


@comina8: quel ="" è un parametro di default. Se la funzione viene chiamata senza parametri, il parametro ClientName viene assegnato a "". Scelta discutibile ma legale.
Ultima modifica effettuata da lorenzo 16/08/11 9:37
aaa