Salve a tutti,
ho un problema nel passare ad un template un tipo strutturato.
Lo spezzone di codice incriminato è il seguente:
Ovvero io dichiaro il tipo strutturato globale _cella (globale perchè avevamo visto che se era dentro una funzione il c++ non permetteva di passarlo in un template) e poi nella mia classe cerco di creare una lista "spazio" passandogli quel tipo in questo modocodice:template <class T> struct _cella{ Cella<T> * genitore; Cella<T> * sinistro; Cella<T> * destro; T valore; }; //typedef struct _cella Cella_Albero; template <class T> class Bin_treel : public Bin_tree<T, int>{ public: typedef typename ListaP<T>::posizione posizione; typedef typename Bin_tree<T, posizione>::value_type value_type; typedef typename Bin_tree<T, posizione>::Nodo Nodo; // costruttori e distruttori Bin_treel(); //~Bin_treel(); // operatori void create(); bool empty(); Nodo root(); Nodo parent(Nodo); Nodo sx(Nodo); Nodo dx(Nodo); bool sx_empty(Nodo); bool dx_empty(Nodo); //void costr(Bin_treel<T>); void erase(Nodo); T read(Nodo); void write(Nodo , value_type ); void ins_root(Nodo); void ins_sx(Nodo); void ins_dx(Nodo); private: ListaP<_cella<T> > spazio; int nNodi; Nodo inizio; posizione NIL; };
L'errore che mi da su quella dichiarazione è:codice:ListaP<_cella<T> > spazio;
Il codice completo lo trovate qui incollato tutto assieme:codice:cannot declare field 'Bin_treel<int>::spazio' to be of abstract type 'ListaP<_cella<int> >' Bin_treel.cpp /Alberi Binari line 50 C/C++ Problem
http://www.ideone.com/o6k2b
Per farvi vedere tutti gli errori che mi da.
Potete invece anche trovarlo diviso per file per una migliore lettura qui:
Main del programma: http://www.ideone.com/qJB9n
Bin_treel.h : http://www.ideone.com/gM9sE
Bin_tree.h : http://www.ideone.com/oscLl
ListaP.h : http://www.ideone.com/ypZsO
Cella.h : http://www.ideone.com/aiJ6c
Liste_collegate.h : http://www.ideone.com/XGApr
Comprendo che il programma è gigante (circa 1000 righe di codice) ma il problema fondamentale dipende proprio dal fatto che non mi prende quel tipo strutturato, se riuscissi a farlo andare si risovlerebbero quasi tutti gli errori. Mi sfugge però cos'è che non va.
Ringrazio in anticipo chi avrà l'infinita pazienza di aiutarmi,
Neptune.