In questo programma mi dà diversi errori ma nn riesco a capire qual è il problema. Qualcuno può aiutarmi?

//PERSONA.H

#ifndef PERSONA_H_
#define PERSONA_H_
#include <cstdlib>
#include <iostream>
#include <string.h>


class Persona{
protected:
char* nome;
int eta;
int sesso;
public:
Persona(const char* NOME=" ",int SESSO=1, int ETA=0):

nome(new char[strlen(NOME)+1]),
sesso(SESSO),
eta(ETA){strcpy(nome,NOME);}
}

void chisei(){
cout<<"Sono una persona di nome "<<nome<<" sesso "<<sesso<<" ed ho "<<eta<<" anni ";
}

};

#endif


//STUDENTE.H

#ifndef STUDENTE_H_
#define STUDENTE_H_
#include "Persona.h"



class Studenteublic Persona{
protected:
int esami;
int matricola;
char* facolta;
public:
Studente(const char* NOME=" ",char SESSO='M',int ETA=0,int ESAMI=0,long MATRICOLA=111111,char* FACOLTA=" ")
:Persona(NOME,SESSO,ETA),
esami(ESAMI),
matricola(MATRICOLA),
facolta(new char[strlen(FACOLTA)+1]){
strcpy(facolta,FACOLTA);}

void chisei(){
cout<<"\n Sono uno studente della facoltà di "<<facolta<<" Matricola "<<matricola<<" ed ho fatto "<<esami;}


};

#endif


//BORSISTA.H

#ifndef BORSISTA_H_
#define BORSISTA_H_


#include "Studente.h"

class Borsistaublic Studente{

protected:
long borsa;
public:
Borsista(const char* NOME=" ",char SESSO='M',int ETA=0,int ESAMI=0,long MATRICOLA=111111,char* FACOLTA=" ",long BORSA=10000000):
Studente(NOME,SESSO,ETA,ESAMI,MATRICOLA,FACOLTA),

borsa(BORSA){
}

void chisei(){
cout<<"\n Inoltre ho ricevuto un borsa di studio pari a "<<borsa<<" di euro";}

};

#endif


//PERSONA.CPP

#include <cstdlib>
#include <iostream>
#include "Borsista.h"

using namespace std;

int main(int argc, char *argv[])
{
Persona Angelo("Angelo Pica",1,23);
Studente Marco("Marco Casa",1,21,6,534001,"Ingegneria");
Borsista Elena("Elena Dito",2,20,3,534242,"Medicina",150000);

Angelo.chisei();
Marco.chisei();
Elena.chisei();

system("PAUSE");
return EXIT_SUCCESS;
}