Salve a tutti, ho un problema con una traccia.
Devo generalizzare una lista in modo che funga con vari tipi di dato.
All'inizio il programmino funzionava perfettamente ma mentre apportavo qualche modifica ha dato un errore e non sono più riuscito a farlo andare.
Ecco che errori mi dà:
Ecco il programma:Codice:lista.cpp:7:1: error: redefinition of ‘lista<T>::~lista()’ lista.cpp:7:1: error: ‘lista<T>::~lista()’ previously declared here lista.cpp:20:6: error: redefinition of ‘void lista<T>::inserisci(T)’ lista.cpp:20:6: error: ‘void lista<T>::inserisci(T)’ previously declared here lista.cpp:32:6: error: redefinition of ‘void lista<T>::stampa()’ lista.cpp:32:6: error: ‘void lista<T>::stampa()’ previously declared here
lista.h
lista.cppCodice:#ifndef LISTA_H #define LISTA_H template <class T> struct nodo{ nodo<T>*successivo; T valore; }; template <class T> class lista{ nodo<T>*primo; public: lista(){primo=0;} ~lista(); void inserisci(T); void stampa(); }; #include "lista.cpp" #endif
main.cppCodice:#include "lista.h" #include <iostream> using namespace std; template <class T> lista <T>::~lista(){ while(primo!=0){ nodo<T>*temp=primo; primo=temp->successivo; delete temp; } } template <class T> void lista <T>::inserisci(T val){ nodo<T>*temp=new nodo<T>; temp->successivo=primo; primo=temp; temp->valore=val; } template <class T> void lista<T>::stampa(){ nodo<T>*temp=primo; while(temp!=0){ cout<<"\nValore: "<<temp->valore; temp=temp->successivo; } cout<<endl; }
Codice:#include <cstdlib> #include "lista.h" #include <iostream> using namespace std; /* * */ int main(int argc, char** argv) { cout<<"Test INT"; lista<int> lsint; lsint.inserisci(22); lsint.inserisci(44); lsint.inserisci(6654); lsint.stampa(); cout<<"\nTest FLOAT"; lista <float> lsfloat; lsfloat.inserisci(43.55443); lsfloat.inserisci(543.576); lsfloat.inserisci(3255.9786); lsfloat.stampa(); cout<<"\nTest DOUBLE"; lista <double> lsreal; lsreal.inserisci(776554433); lsreal.inserisci(325425323234); lsreal.inserisci(64637353); lsreal.stampa(); cout<<"\nTest CHAR"; lista <char> lschar; lschar.inserisci('o'); lschar.inserisci('a'); lschar.inserisci('i'); lschar.inserisci('c'); lschar.stampa(); return 0; }