Ciao a tutti!
Ho un problema che non riesco a risolvere,spero davvero che possiate aiutarmi. Ho creato una struttura dati pila con vettore. Ma quando compilo mi dà sempre questo errore: "Circular pilavet <- pilavet.o dependency dropped. creating pilavet.a No such file." Sarò grato a chi mi darà una mano! Eccovi il codice:

pila.h
codice:
#ifndef pila_h
#define pila_h
#include <iostream>

using namespace std;

template <class tipoelem>
class pila {
      public:
             virtual void creapila()=0;
             virtual bool pilavuota()=0;
             virtual tipoelem leggipila()=0;
             virtual void fuoripila()=0;
             virtual void inpila(tipoelem)=0;     
      };
      
#endif
pilavet.h
codice:
#ifndef pilavet_h
#define pilavet_h
#include <iostream>
#include <stdlib>

#include "pila.h"
#include "nodopila.h"

using namespace std;
const int maxlung=100;

template <class tipoelem>
class pilavet: public pila<tipoelem> {
      
      typedef typename pilavet<tipoelem>::nodopila<tipoelem> nodo;
      
      public:
             pilavet();
             pilavet(int);
             void creapila();
             bool pilavuota();
             tipoelem leggipila();
             void fuoripila();
             void inpila(tipoelem);
      private:
              nodo pilap[maxlung];
              int testa;    
              int dimpila;  
      }
#endif
      
template <class tipoelem> //COSTRUTTORE CON DIM FISSA
pilavet<tipoelem>::pilavet() {
                   dimpila=maxlung;
                   creapila();
                   }
                   
template <class tipoelem> //COSTRUTTORE CON DIM IN INPUT
pilavet<tipoelem>::pilavet(int dimensione) {
                     dimpila=dimensione;
                     creapila();
                     }
                  
template <class tipoelem> //CREAPILA
pilavet<tipoelem>::creapila() {
                    testa=0;
                    }
                    
template <class tipoelem> //PILAVUOTA
bool pilavet<tipoelem>::pilavuota() {
     return (testa==0);
     }
     
template <class tipoelem> //LEGGIPILA
tipoelem pilavet<tipoelem>::leggipila() {
         if (testa != 0)
           return (pilap[testa-1].leggielem() );
         }
         
template <class tipoelem> //FUORIPILA
void pilavet<tipoelem>::fuoripila() {
                     if (!pilavuota())
                        testa= testa-1;
                     else
                       cout<<"La pila e' vuota\n";
                     }         
                     
template <class tipoelem> //INPILA
void pilavet<tipoelem>::inpila (tipoelem elem) {
     if (testa==maxlung)
       cout<<"Non ci sono spazi liberi\n";
     else {
            pilap.scrivielem(elem);
            testa++;          
          }
     
     }