PDA

View Full Version : [C++] Template, Classi e Typedef


Morfeo XP
30-01-2008, 12:56
Salve a tutti!

Ho creato le seguenti classi:


#include "Cella.h"

using namespace std;

template <class TA> class AlberoBin
{
public:
typedef Cella<TA>* Nodo;
AlberoBin();
~AlberoBin();

//Tutti gli operatori della alberoBin
void creaAlberoBin ();
bool alberoBinVuoto ();
Nodo binRadice();
Nodo binPadre(Nodo);
Nodo figlioSinistro(Nodo);
Nodo figlioDestro(Nodo);
bool sinistroVuoto(Nodo);
bool destoVuoto(Nodo);
void insBinRadice();
void insFiglioSinistro(Nodo);
void insFiglioDestro(Nodo);
TA leggiNodo(Nodo);
void scriviNodo(Nodo, TA);
void cancSottoAlbero(Nodo);

private:
Nodo radice;
};

//### Implementazione dei metodi ###




template<class T> class Cella
{
public:
typedef T tipoelem;
typedef Cella<T>* Nodo;
Cella();
Cella(tipoelem);
~Cella();
void setCella(tipoelem);
tipoelem getCella();

void setFiglioSinistro(Nodo);
Nodo getFiglioSinistro();

void setFiglioDestro(Nodo);
Nodo getFiglioDestro();

void setPadre(Nodo);
Nodo getPadre();

private:
tipoelem dato;
Nodo figlioSinistro;
Nodo figlioDestro;
Nodo padre;
};

//### Implementazione dei metodi ###



Nella classe AlberoBin ho definito il tipo Nodo di tipo puntatore a Cella<TA>.

Vorrei sapere se esiste un modo per poter dichiarare variabili di tipo Nodo all'interno del main.

Ovviamente nel main faccio l'include del file AlberoBin.h contenente la classe AlberoBin, ma dichiarazioni di variabili del tipo

Nodo nodo;

non funzionano.


Grazie

fek
30-01-2008, 13:17
Vorrei sapere se esiste un modo per poter dichiarare variabili di tipo Nodo all'interno del main.


AlberoBin<int>::Nodo nodo;


Nel caso di un albero di interi.


#include "Cella.h"

using namespace std;


Non usare mai direttive 'using' o 'using namespace' in un file .hpp.

Morfeo XP
30-01-2008, 14:37
Grazie fek!

Quali problemi potrebbero comportare l'utilizzo della direttiva using in un file .h?

Comunque, ne faccio un uso temporaneo...
Mi è utile per poter utilizzare qualche cout per verificare il corretto funzionamento.