salve, ragazzi utilizzo lo stesso post poichè il problema ha sempre a che fare con template, ho realizzato una classe Lista<Elementi> quindi con i soliti template, in questa classe dichiaro un nuovo tipo come al solito:
codice:
#ifndef listavet_h
#define listavet_h
// lunghezza massima della lista
const int DIMENSIONE = 1000;
// classe Lista
template< class Elem >
class Lista
{
public:
typedef int posizione;
il tipo in questione è posizione, fin qui tutto ok, adesso viene il problema:
ho creato un nuovo file chiamato Tool_lista.h e .cpp in cui ci sono solo funzioni che sono utili alla lista ad esempio stampaLista o epuraLista vi faccio vedere uno spezzone di esempio:
codice:
#include "tool_lista.h"
#include "listavet.h"
#include <iostream>
using namespace std;
//funzione stampa una lista
template <class Elementi>
void stampaLista(Lista<Elementi> &l){
cout<<"[" ;
Lista<Elementi>::posizione indice;
for (indice = l.primoLista(); ((!l.finelista(indice)) && (indice < DIMENSIONE)); indice = l.succLista(indice))
{
cout << l.leggilista(indice).stampaPersona();
if (!l.finelista(l.succLista(indice)))
cout << ", ";
}
cout<<"]\n";
}
il problema è che mi ritrovo con diversi errori tutti dovuti alla dichiarazione:
Lista<Elementi>:
osizione indice;
dal codice si capisce che voglio utilizzare una variabile di tipo posizione con nome indice per ciclare nella lista, ma non capisco perchè mi ritrovo con questi errori:
...\tool_lista.cppIn function `void stampaLista(Lista<Elementi>&)':
...\tool_lista.cpp In function `void stampaLista(Lista<Elementi>&)':
11 ...\tool_lista.cpp `indice' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
Perchè mi ritrovo con questi errori???
Sbaglio a dichiarare la variabile indice, perchè????
Aiutatemi perpiacere.
GRAZIE mille e ciao