Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219

    [c++]Comportamento inatteso di una funzione friend

    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:
    codice:
    int main (int agrc, char **argv)
    {
        Studente a;
        init(a);
        a.print();
        return 0;
    }
    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.
    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:

    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;
    }
    Per chiarezza ecco cosa vedo sul terminale:
    codice:
    tizio
    caio
    45
       , 0anni
    Cosa fare?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [c++]Comportamento inatteso di una funzione friend

    codice:
    class Studente
    {
        public:
        Studente();
        void set(void);
        void print(void);
        friend void init (Studente& a);
        private:
        int eta;
        string nome,cognome;
    };
    
    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;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Ok a posto,funziona.Era un errore banale.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.