PDA

Visualizza la versione completa : [C++] Classe base e derivate


lacchiappasogni
20-06-2012, 12:19
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


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


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


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;
};

Loading