Ciao a tutti, spero possiate darmi una mano:

Il codice è questo:

codice:
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

struct Tipostud{
                string Cognome;
                string Nome;
                string Matr;
                int Eta;
                int AnnoIscrizione;
                string Citta;
                };
                typedef Tipostud* Pstud;     
                                
void Inserimento (Tipostud &, char &);
void getfile(Pstud [],Pstud [],Pstud []);
void insort(Pstud [],int ,Pstud ,char );

int main(){
    
    int Numpers=3,Lrec=sizeof(Tipostud);
    /*char chr;
    Tipostud studente;
    cout<<"Numero di persone da inserire: ";
    cin>>Numpers;
    fstream filepers;
    filepers.open("studenti.bin",ios::in|ios::out|ios::binary|ios::ate);
    if (!filepers)
      filepers.open("studenti.bin",ios::out|ios::binary|ios::trunc);
    while(Numpers>0){
    Inserimento(studente,chr);
    if (chr=='s') {
    filepers.seekp(0,ios::end);
    filepers.write((char*)&studente,Lrec);
    Numpers--; 
    }}
    filepers.close();*/
    Pstud PuntaP1[Numpers],PuntaP2[Numpers],PuntaP3[Numpers];
    getfile(PuntaP1,PuntaP2,PuntaP3);
    
    
    
    
    system("pause");
    return 0;
    
}

   void Inserimento (Tipostud &pers1, char &ch)
   
{

   cout << "INSERIMENTO PERSONE" << endl << endl;
   cout << "Cognome= ";
   cin >> pers1.Cognome;
   cout << "Nome= ";
   cin >> pers1.Nome;
   cout << "Eta\'= ";
   cin >> pers1.Eta;
   cout << "Matricola= ";
   cin >> pers1.Matr;
   cout << "Anno Iscrizione= ";
   cin >> pers1.AnnoIscrizione;
   cout << "Citta\'= ";
   cin >> pers1.Citta;
   cout << "Salva (s/n)? ";
   cin >> ch;
   
}

void getfile(Pstud PuntaP1[],Pstud PuntaP2[],Pstud PuntaP3[]){
     
     Tipostud studente;
     ifstream file;
     file.open("studenti.bin",ios::in|ios::binary|ios::ate);
     if (!file)
      file.open("studenti.bin",ios::out|ios::binary|ios::trunc);
      
     int Lrec=sizeof(Tipostud);
     int Numstud=file.tellg()/Lrec;
     file.seekg(0,ios::beg);
     for(int i=1;i<Numstud;i++){
             file.read((char*) &studente,Lrec);
             PuntaP1[i]=new Tipostud;
             *PuntaP1[i]=studente;
             PuntaP2[i]=PuntaP1[i];
             PuntaP3[i]=PuntaP1[i];
             insort(PuntaP1,i,PuntaP1[i],'c');
             insort(PuntaP2,i,PuntaP2[i],'m');
             insort(PuntaP3,i,PuntaP3[i],'e');
             }
     file.close();
}

void insort(Pstud Punt[],int n,Pstud Temp,char ord){
     
     int j;
     Punt[0]=Temp;
     j=n-1;
     if(ord=='c'){
                  while(stricmp(Punt[j].Cognome,Punt[0].Cognome)>0){
                  Punt[j+1]=Punt[j];
                  j--;
                  }
                  }
     else if(ord=='m'){
                  while(stricmp(Punt[j].Matr,Punt[0].Matr)>0){
                  Punt[j+1]=Punt[j];
                  j--;
                  } 
                  }  
     else{
                  while(Punt[j].Eta>Punt[0].Matr){
                  Punt[j+1]=Punt[j];
                  j--;
                  }   
                  }   
            Punt[j+1]=Punt[0];
     }
L'errore che non capisco e che non mi fa andare avanti è questo:

codice:
In function `void insort(Tipostud**, int, Tipostud*, char)': 
Cognome' has not been declared
request for member of non-aggregate type before ',' token 
`Cognome' has not been declared
Lo stesso errore è ripetuto per Matr ed Eta. Sapete indicarmi una soluzione ed il motivo dell'errore?