Guarda, io l'ho compilato facendo questa modifica (le parentesi nel'else):

codice:
void lista::eliminapari(){
    nodo *p, *del;
    int n=0;
    p=l;
    
    if (l==0)
           cout<<"La lista è vuota";
        
     while(p!=0){        //Scorro la lista   
        
         if (n%2==0 && n==0 ){      //Devo eliminare il primo elemento:
             del=p;
             p=p->succ;
             l=p;
             delete del;
             cout<<"0 elemento cancellato\n";
         n++;}
         
         else if (n%2==0 && n!=0){     //Se n è pari
             
             del=p->succ; 
             p->succ=p->succ->succ;
             
        delete del;        //Elimino l'elemento
        cout<<n<<"elemento cancellato\n";
        n++;
        }
        else  {
        
            p=p->succ;       //Passo all'elemento successivo
            n++;                //Incremento n
       } 
}
Così non da errori, ma in realtà non cancella i nodi pari... tra l'altro non ho capito cosa vuoi fare nel else if