Ciao ragazzi,
avrei un piccolo problema. Ho realizzato deu strutture di alberi,una con vettore ed una con puntatore. La prima usa tra i parametri, un nodo di tipo int. Quella con puntatore invece una classe nodo realizzata per l'occasione. Nella classe base quindi come definisco questo nodo, che nelle derivate è invece definito come due tipi diversi?

albero con vettore
codice:
template <class tipoelem>
class alberobinvet : public alberobinario<tipoelem>
{
      public:
             typedef int nodo;
             
             alberobinvet();
             void creabinalbero();
             bool binalberovuoto();
             nodo binradice();
             nodo binpadre(nodo);
             nodo figliosinistro(nodo);
             nodo figliodestro(nodo);
             bool sinistrovuoto(nodo);
             bool destrovuoto(nodo);
             tipoelem legginodo(nodo);
             void scrivinodo(nodo, tipoelem);
             void insbinradice(nodo);
             void insfigliosinistro(nodo);
             void insfigliodestro(nodo);
             void cancsottobinalbero(nodo);
             
             typedef struct Cella 
              { 
               tipoelem elemento; 
               int sinistro;
               int destro;
               int padre; 
              } cella;
      
      private:
              cella *spazio;
              nodo libero;
              nodo radice;
              int numnodi;
              int nodiliberi;
      };     
      #endif
albero con puntatore
codice:
template<class tipoelem>
class alberobinp
{
   public:
      typedef nodoalberop<tipoelem> *nodo;
      alberobinp();
      void creabinalbero();
      bool binalberovuoto();
      nodo binradice();
      nodo binpadre(nodo);
      nodo figliosinistro(nodo);
      nodo figliodestro(nodo);
      bool sinistrovuoto(nodo);
      bool destrovuoto(nodo);
      tipoelem legginodo(nodo);
      void scrivinodo(nodo, tipoelem);
      void insbinradice(nodo);
      void insfigliosinistro(nodo);
      void insfigliodestro(nodo);
      void cancsottoalbero(nodo);
   private:
      nodo radice;
};
classe nodo
codice:
template<class tipoelem>
class nodoalberop
{
   public:
      nodoalberop();
      
      void setpadre(nodoalberop *);
      void setfigliosx(nodoalberop *);
      void setfigliodx(nodoalberop *);
      void setetichetta(tipoelem);
      
      nodoalberop *getpadre();
      nodoalberop *getfigliosx();
      nodoalberop *getfigliodx();
      tipoelem getetichetta();
      
      nodoalberop operator=(nodoalberop);
   private:
      nodoalberop *padre;
      nodoalberop *figliosx;
      nodoalberop *figliodx;
      tipoelem etichetta;
};