Per effettuare l' overlodaing dell' operatore << e >> per formattare lo stream di input e output ho un programmino che funziona finkè dikiaro le variabili della classe come pubbliche....se provo a rendere le variabili private e rendendo l' operatore di overloding FRIEND, il programma non funziona +....ho urgentissimo bisogno di un aiuto causa esame...ma forse è meglio postare il codice:

#include <iostream>

using namespace std;

class messaggi {
private:
char nome[20];
char cognome[20];

public:

void inserisci();

ostream& operator<<(ostream ,messaggi &);
istream& operator>>(istream& ,messaggi &);
};

void messaggi::inserisci(){
messaggi g;
cout << "Inserisci nome e cognome" <<endl;
cin >>g;
cout <<g<<endl;
}

ostream& operator<<(ostream uscita,messaggi &vaio){
uscita<<vaio.nome<<' '<<vaio.cognome;
return uscita;
}

istream& operator>>(istream& ingresso,messaggi &ciao){
ingresso>>ciao.nome>>ciao.cognome;
return ingresso;
}

void main(){
messaggi vai;

vai.inserisci();
// cout <<"Sei un grande"<<endl;
}


Se rendo NOME e COGNOME privati, come devo modificare il mio programma affinkè contiunui a funzionare ?