Questo dovrebbe essere l'ultimo tassello mancante alla mia preparazione.

Facciamo un esempio semplice:
Ho la classe studenti (che per semplicità conterrà solo l'attributo protected età). Poi ho una classe Vettore che prevede le seguenti variabili membro:
- V di tipo puntatore, contiene il riferimento al vettore di studenti allocato dinamicamente
- Nelem, variabile di tipo intero, rappresenta il numero massimo di elementi del vettore
La classe Vettore fornisce le seguenti funzionalità:
- overloading delle funzioni di accesso []
- funzioni get per ciascuna delle variabili membro

Ho realizzato la classe studente in questo modo:
codice:
class studente{
      protected:
             int eta;
      public:
             //costr
             studente(int e=0){
                          eta=e;
                          }
             
             //gets
             int getE() const { return eta; }
             
             //sets
             void setE(int e) { eta=e; }
      };
E la classe vettore così:
codice:
class vettore:public studente{
      protected:
             studente v[100];   
             studente *p;
      public:
             
             studente operator[](int i){ 
                      p=&v[i];
                      return *p; 
                      }
             
             //get
      };
L'overload della funzione [] non mi funziona, ovvero se per esempio nel main faccio:

codice:
vettore vet;
    
    vet[0].setE(17);

    cout << vet[0].getE() << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
Mi stampa 0

Sia sui lucidi messi a disposizione dal prof che sul libro non c'è niente a riguardo, ne ho trovato qualcosa su internet.
Qualcuno sa come si fa?