salve, sn riuscito a implementare la classe lista e funziona. ora, però, sto cercando di renderla una classe template ma nel metodo primolista mi da un errore di compilazione. questo è il codice della calsse:
listap.h
listap.cppcodice:#ifndef _LISTAP_H #define _LISTAP_H #include <iostream> using namespace std; template<class T> class listap { private: typedef int tipoelem; struct nodo { nodo *precedente; T elemento; nodo *successivo; }; typedef T tipoelem; public: typedef nodo * posizione; posizione sentinella; listap(); void crealista(); bool listavuota(); posizione primolista(); bool finelista(posizione); void inslista(posizione &, tipoelem); void canclista(posizione &); tipoelem leggilista(posizione); void scrivilista(posizione &, tipoelem); posizione predlista(posizione); posizione succlista(posizione); }; #endif
l'errore che mi viene notificato è il seguente:codice:#include "listap.h" template<class T> listap<T>::listap() { crealista(); } template<class T> void listap<T>::crealista() { sentinella = (posizione)malloc(sizeof(nodo)); tipoelem elemnullo = 0; sentinella->precedente = sentinella; sentinella->elemento = elemnullo; sentinella->successivo = sentinella; } template<class T> bool listap<T>::listavuota() { return((sentinella->precedente == sentinella) && (sentinella->successivo == sentinella)); } template<class T> listap::posizione listap<T>::primolista() { return(sentinella->successivo); } template<class T> bool listap<T>::finelista(posizione p) { return(p->successivo == sentinella); } template<class T> void listap<T>::inslista(posizione &p, tipoelem elem) { posizione temp = new nodo; temp->elemento = elem; temp->precedente = p->precedente; temp->successivo = p; p->precedente->successivo = temp; p->precedente = temp; p = temp; } template<class T> void listap<T>::canclista(posizione &p) { posizione temp = p; p->precedente->successivo = p->successivo; p->successivo->precedente = p->precedente; p = p->successivo; delete(temp); } template<class T> listap<T>::tipoelem listap::leggilista(posizione p) { return(p->elemento); } template<class T> void listap<T>::scrivilista(posizione &p, tipoelem elem) { p->elemento = elem; } template<class T> listap<T>::posizione listap::predlista(posizione p) { return(p->precedente); } template<class T> listap<T>::posizione listap::succlista(posizione p) { return(p->successivo); }
`template<class T> class listap' used without template parameters
ho provato a cercare dei suggerimenti in rete ma non sn riuscito a risolvere il problema. in cosa avrei sbagliato???

Rispondi quotando
