Normalmente non si usa l'operatore << sulle stringhe, ma sugli stream, per cui il tuo operator<< dovrebbe essere:
codice:
std::ostream & Persona::operator<<(std::ostream & os)
{
    return os<<nome<<" "<<eta<<" ";
}
Sarà poi il chiamante ad usarlo eventualmente su uno stringstream per ricavarne una stringa:
codice:
std::ostringstream os;
Persona p;
// ...
os<<p;
std::string s=os.str();
(per l'ostringstream vedi qui)