Appunto devi dichiarare la 2 funzioni come friend!
codice:
#include <iostream>
using namespace std;
class messaggi {
private:
char nome[20];
char cognome[20];
public:
void inserisci();
friend ostream& operator<<(ostream ,messaggi &);
friend 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;
}
il tuo codice era una contraddizione: le due funzioni non erano ne friend, ne membri (a metà).
P.S. Usa i tag [ CODE], vedi regolamento