Ah difatti cancellando i vecchi file oggetto (ogni tanto il dev lo fa questo scherzetto) in cui avevo messo stud come variabile pubblica non va più.

Quindi ho risolto cosi, in Studenti ho implementato questo metodo:

codice:
studente & GetStudente(size_t Index)
      {
         return stud[Index];
      }
e in studente quello scritto da te ovvero questo:

codice:
esame & GetEsame(size_t Index)
    {
        return esami[Index];
    }
e la mia istruzione nel main diventa questa

codice:
sdi1.GetStudente(0).GetEsame(0).setEsame("Matematica Discreta");
E sembra funzionare tutto.
Ma di preciso come fa a funzionare? ad esempio l'intestazione del metodo "esame & GetEsame(size_t Index)" che significa? cioè "esame" deve essere la classe a cui ci riferiamo, poi un nome di metodo da noi inventato e "size_t" per cosa sta?