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
albero con puntatorecodice: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
classe nodocodice: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; };
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; };

Rispondi quotando