Ayuda a terminar programa

iDager

Bovino maduro
#1
Tengo un problema al borrar memoria dinámica en estructuras anidada
Código:
struct Fecha{
       int Dia;
       int Mes;
       int Anio;
       };
struct Persona{
       string Nombre;
       string RFC;
       
       Fecha *fecha;
       };
struct Empleado{
       int ID;
       double Sueldo;
       string Puesto;
       
       Persona *P;
       };
Empleado llamara a persona y esta a su vez a fecha
Código:
int main()
    {
     Empleado *Emp;
     int n,i;
     cout<<"Captura El Numero de Empleados: ";
     cin>>n;
     if(n>0)
       {
        Emp=new Empleado[n];
        for(i=0;i<n;i++)
           Leer(&Emp[i]);
           system("CLS");
           for(i=0;i<n;i++)
              {
               Imprimir(&Emp[i]);
               system("pause");
               }
         }
       else cout<<"ERROR"<<endl;
       [COLOR="#FF0000"]delete (*Emp).P.fecha;
       delete (*Emp).P;[/COLOR]
       delete []Emp;
       return 0;
     }
Lo de rojo es lo que esta mal segun el compilador xD
Código:
 void Leer(Empleado *E)
     {
      cout<<"Captura Datos del Empleado"<<endl;
      cout<<"ID: ";
      cin>>(*E).ID;
      cout<<"Sueldo: ";
      cin>>(*E).Sueldo;
      cout<<"Puesto: ";
      getline(cin,(*E).Puesto);
      [COLOR="#FF0000"](*E).P=new Persona;[/COLOR]
      cout<<"Nombre: ";
     [COLOR="#FF0000"] getline(cin,*(*E).P.Nombre);[/COLOR]
      cout<<"RFC: ";
      [COLOR="#FF0000"]getline(cin,*(*E).P.RFC);[/COLOR]
      [COLOR="#FF0000"](*E).P.fecha=new Fecha;[/COLOR]
      cout<<"Captura la fecha de Nacimiento"<<endl;
      cout<<"Dia: ";
    [COLOR="#FF0000"]  cin>>*(*E).P.fecha.Dia;[/COLOR]
      cout<<"Mes: ";
      [COLOR="#FF0000"]cin>>*(*E).P.fecha.Mes;[/COLOR]
      cout<<"Anio: ";
      [COLOR="#FF0000"]cin>>*(*E).P.fecha.Anio;[/COLOR]
      }
Nose que este mal si la forma en que manejo el operador punto o que pero siempre me dice
por ejemplo fecha no ha sido declarado, dia no ha sido declarado etc etc,
ayudaaa :)
 
Arriba