Salve, da qualche giorno sto sviluppando alcuni template sulle strutture dinamiche lineari come le code, le pile e le liste.
Nel corso dello sviluppo mi sono accorto di diversi problemi nella scrittura del codice. Più che altro di tipo teorico perchè credevo di aver fatto bene, ma poi dopo qualche suggerimento mi rendo conto che i miei sono errori di fondo.
Non posto l'intero codice della mia lista altrimenti sarebbe lungo, ma scrivero vari snippet per risolvere un problema alla volta.
La prima domanda che vi pongo è sull'uso degli iteratori, non c'è dubbio che siano di grande utilita, per quel che ho imparato so che è un puntatore per l'accesso agli elementi di un oggetto che contiene altri oggetti. Ora per sviluppare una lista ho implementato un iteratore molto semplice che però non riesco a compilare per via di un problema con la clausola friend.
Vi posto il codice dell'interfaccia:
Quando provo a richiamare nel main un iterator<int> i; mi da un errore su friend class list<T> riportando 'list' is not a template...codice:template<class T> class iterator { private: nodo<T>* pos;//classe template nodo public: iterator(); iterator<T> &operator=(const iterator<T>&); void operator++(); void operator--(); friend class list<T>;//Classe template lista };
Secondo voi cosa può essere? é inoltre la definizione di un iteratore in questo modo è corretta?