ciao a tutti, sto creando una struttura dati astratta LISTA con i seguenti codici:
listap.h
listap.cppcodice:#ifndef _listap_h #define _listap_h #include <iostream> #include <stdlib.h> template<class tipoelem> class listap { public: typedef listap *posizione; listap(); ~listap(); void crealista(); bool listavuota(); posizione primolista(); bool finleista(posizione); tipoelem leggilista(posizione); void scrivilista(posizione, tipoelem); posizione succlista(posizione); posizione predlista(posizione); void inslista(posizione, tipoelem); void canclista(posizione); private: listap *precedente; tipoelem elemento; listap *successivo; }; #endif
quando compilo la classe mi dà il seguente errore alla riga 34:codice:#include "listap.h" #include <iostream> #include <stdlib.h> using namespace std; template<class tipoelem> listap<tipoelem>::listap() { this->crealista(); } template<class tipoelem> listap<tipoelem>::~listap() { delete elemento; } template<class tipoelem> void listap<tipoelem>::crealista() { precedente = NULL; elemento = new(tipoelem); successivo = NULL; } template<class tipoelem> bool listap<tipoelem>::listavuota() { return((precedente == NULL) && (successivo == NULL)); } template<class tipoelem> listap<tipoelem>::posizione listap<tipoelem>::primolista() { return(this); } template<class tipoelem> bool listap<tipoelem>::finelista(listap<tipoelem>::posizione pos) { return(this->succlista(pos)); } template<tipoelem> tipoelem listap<tipoelem>::leggilista(listap<tipoelem>::posizione pos) { return(pos->elemento); } template<class tipoelem> void listap<tipoelem>::scrivilists(listap<tipoelem>::posizione pos, tipoelem elem) { pos->elemento = elem; } template<tipoelem> listap<tipoelem>::posizione listap<tipoelem>::succlista(listap<tipoelem>::posizione pos) { return(pos->successivo); } template<tipoelem> listap<tipoelem>::posizione listap<tipoelem>::predlista(listap<tipoelem>::posizione pos) { return(pos->precedente); } template<tipoelem> void listap<tipoelem>::inslista(posizione pos, tipoelem elem) { posizione temp = NULL; temp->successivo = pos; temp->precedente = pos->precedente; (pos->precedente)->successivo = temp; pos->precedente = temp; temp->elemento = elem; pos = temp; } template<tipoelem> void listap<tipoelem>::canclista(posizione pos) { posizione temp = pos; (temp->precedente)->successivo = temp->successivo; (temp->successivo)->precedente = temp->precedente; pos = pos->successivo; delete(temp); }
34 C:\Dev-Cpp\esercizi\listap.cpp expected constructor, destructor, or type conversion before "listap"
34 C:\Dev-Cpp\esercizi\listap.cpp expected `;' before "listap" .
io penso che sia dovuto al fatto che ho usato la typedef nel file listap.h.
perchè mi dà questo errore??? io devo per forza usare il tipo posizione.
vi prego aiutatemi.

Rispondi quotando