Guarda ora ho provato.
Facendo le seguenti modifiche a me compila:
listap.h
nodo.hcodice:#ifndef _listap_h #define _listap_h #include "nodo.h" #include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; template<class tipoelem> class listap { public: typedef nodo<tipoelem> *posizione; listap(); void crealista(); bool listavuota(); posizione primolista(); bool finelista(posizione); tipoelem leggilista(posizione); void scrivilista(posizione, tipoelem); posizione succlista(posizione); private: nodo<tipoelem> cella; }; template<class tipoelem> listap<tipoelem>::listap() { crealista(); } template<class tipoelem> void listap<tipoelem>::crealista() { cella.setprec(&cella); cella.setsuc(&cella); cella.setelem(0); } template<class tipoelem> bool listap<tipoelem>::listavuota() { return((cella.getprec() == &cella) && (cella.getsuc() == &cella)); } template<class tipoelem> typename listap<tipoelem>::posizione listap<tipoelem>::primolista() { return(&cella); } template<class tipoelem> bool listap<tipoelem>::finelista(typename listap<tipoelem>::posizione pos) { return(pos->getsuc() == primolista()); } template<class tipoelem> tipoelem listap<tipoelem>::leggilista(typename listap<tipoelem>::posizione pos) { return(pos->getelem()); } template<class tipoelem> void listap<tipoelem>::scrivilista(typename listap<tipoelem>::posizione pos, tipoelem elem) { pos->setelem(elem); } template<class tipoelem> typename listap<tipoelem>::posizione listap<tipoelem>::succlista(typename listap<tipoelem>::posizione pos) { return(pos->getsuc()); } #endif
codice:#ifndef _nodo_h #define _nodo_h #include <iostream> #include <stdlib.h> using namespace std; template<class T> class nodo { public: nodo(); void setprec(nodo *); void setelem(T); void setsuc(nodo *); nodo *getprec(); T getelem(); nodo *getsuc(); private: nodo *precedente; T elemento; nodo *successivo; }; template<class T> nodo<T>::nodo() { precedente = NULL; elemento = 0; successivo = NULL; } template<class T> void nodo<T>::setprec(nodo *prec) { precedente = prec; } template<class T> void nodo<T>::setelem(T elem) { elemento = elem; } template<class T> void nodo<T>::setsuc(nodo *succ) { successivo = succ; } template<class T> nodo<T>* nodo<T>::getprec() { return(precedente); } template<class T> T nodo<T>::getelem() { return(elemento); } template<class T> nodo<T> *nodo<T>::getsuc() { return(successivo); } #endif
main
prova un po' e fammi sapere...codice:#include "listap.h" #include <iostream> #include <stdlib.h> using namespace std; int main() { listap<int> list; cout << list.listavuota() << "\n\n"; cout << list.primolista() << "\n\n"; listap<int>::posizione posi = list.primolista(); cout << list.finelista(posi) << "\n\n"; cout << list.leggilista(posi) << "\n\n"; int el = 50; list.scrivilista(posi, el); cout << list.leggilista(posi) << "\n\n"; cout << list.succlista(list.primolista()) << "\n\n"; system("pause"); return 0; }
PS:
Se stai usando il dev (prima di tutto ti consiglio di cambiarlo) dopo aver apportato le modifiche fai CTRL+F11, oppure clicca su esegui e nel menù che appare clicca su Riassembla tutto

Rispondi quotando