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