Cosa vuoi fare con sta funzione? una possibile soluzione sarebbe quella di estrappolare un dato dalla lista.
persona è un tipo di dato (come se fosse un int x intenderci) e quindi non puoi usarlo nel modo che lo stai usando tu. Puoi fare invece una cosa del genere.
bool estTesta (lista& inizio, lista & dataCheRiceve)
{lista p = inizio;
if (p == 0) return false;
dataCheRiceve.nome = p->nome;
dataCheRiceve.eta = p->eta;
inizio = p->successiva;
delete p;
return true;
}
e usarlo così nel main:
lista datoCheRiceve;
estTesta(inizio,datoCheRiceve);
così non ti da errore e funziona. Ma bisogna vedere se effettivamente e ciò che a te serve. Sinceramente però stai capendo cosa la funzione estTesta sta faccendo?