allora

posto l'header file di una classe

codice:
struct Studente{
       string nome;
       string cognome;
       string matricola;
       };
       
typedef Studente * Sp;

class ElencoPrenotati{
      private:
              Sp elenco;
              int N;
              int cont;
      
      public:
             ElencoPrenotati (int N) {elenco= new Studente [N]; cont=0;};
             ~ElencoPrenotati(){delete [] elenco;}
             bool insert (Studente e);
             void ordina();
             void stampa();
             };
con l'implementazione di ordina di questo tipo

codice:
void ElencoPrenotati::ordina(){
     string temp;
     for (int i=0;i<cont;i++){
         for(int j=i; j<cont;j++)
                 if (elenco[j]->cognome>elenco[j+1]->cognome){
                                            temp=elenco[j]->cognome;
                                            elenco[j]->cognome=elenco[j+1]->cognome;
                                            elenco[j+1]->cognome=temp;
                                            }
                                            }
                                            }
perchè se utilizzo l'operatore -> ho errore ma se uso il . il programma compila e esegue correttamente???