Ho creato la classe Studente, che contiene l' eta, il nome e il cognome.
Ho dichiarato poi la funzione init come friend di questa classe.
Riesco ad accedere ai dati all' interno della funzione init, a modificarli e a stamparli ma solo all' interno della funzione, non appena esco dalla funzione i dati vengono tutti reinizializzati a zero.
Questo è il main:
All' interno della main chiamo la funzione init, che imposta le stringhe nome e cognome su "tizio" e "caio", e l' età a 45 anni.Poi all' interno della init stampo questi dati, e vengono visualizzati correttamente sul terminale.codice:int main (int agrc, char **argv) { Studente a; init(a); a.print(); return 0; }
Ma poi quando chiamo la funzione print, che è una funzione interna alla classe Studente, mi stampa le stringhe vuote e l' età uguale a zero.
Ecco il resto del codice:
Per chiarezza ecco cosa vedo sul terminale:codice:using namespace std; class Studente { public: Studente(); void set(void); void print(void); friend void init (Studente a); private: int eta; string nome,cognome; }; Studente::Studente() { nome=" "; cognome=" "; eta=0; } void Studente::set(void) { cout << "Digitare nome: "; cin >>nome; cout << "Digitare cognome: "; cin >>cognome; cout << "Digitare eta: "; cin >>eta; } void init(Studente a) { a.nome="tizio"; a.cognome="caio"; a.eta=45; cout <<a.nome<<endl; cout<<a.cognome<<endl; cout<<a.eta<<endl; } void Studente::print(void) { cout << nome <<" "<<cognome<<", "<<eta<<"anni"<<endl; }
Cosa fare?codice:tizio caio 45 , 0anni![]()

Rispondi quotando