ciao a tutti, sto creando la struttura lista con il vettore, quando testo il metodo leggilista, che dovrebbe restituire il valore dell'array in posizione fornita come argomento, mi dà errore. second me è un capriccio del compilatore di cacca che sto utilizzando (il dev) perchè a me dà errore al mio amico va bene, eppure i metodi sono fatti in modo identico.
posto i codici:

listavet.h
codice:
#ifndef listav_h
#define listav_h

#include <iostream>
#include <stdlib.h>

using namespace std;

const int dimvet = 100;

template<class tipoelem>
class listav
{
   public:
      typedef int posizione;
            
      listav();
      void crealista();
      bool listavuota();
      posizione primolista();
      bool finelista(posizione);
      tipoelem leggilista(posizione);
      /*void scrivilista(posizione, tipoelem);
      posizione succlista(posizione);
      posizione predlista(posizione);
      void inslista(posizione, tipoelem);
      void canclista(posizione);*/
   private:
      tipoelem vetlista[dimvet];
      int lunglista;
};

#endif

template<class tipoelem>
listav<tipoelem>::listav()
{
   this->crealista();
}

template<class tipoelem>
void listav<tipoelem>::crealista()
{
   for(int i = 0; i < dimvet; i++)
   {
      vetlista[i] = 0;
   }
   lunglista = 0;
}

template<class tipoelem>
bool listav<tipoelem>::listavuota()
{
   return(lunglista == 0);
}

template<class tipoelem>
typename listav<tipoelem>::posizione listav<tipoelem>::primolista()
{
   return(1);
}

template<class tipoelem>
bool listav<tipoelem>::finelista(typename listav<tipoelem>::posizione pos)
{
   return((lunglista == (dimvet - 1)) || (pos == lunglista));
}

template<class tipoelem>
tipoelem leggilista(typename listav<tipoelem>::posizione pos)
{
   return(vetlista[pos]);
}
testlistav.cpp
codice:
#include "listav.h"
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
   listav<int> list;
   
   cout << list.listavuota() << "\n\n";
   
   cout << list.primolista() << "\n\n";
   
   cout << list.finelista(0) << "\n\n";
   
   cout << list.leggilista(0) << "\n\n";
   
   system("pause");
   return 0;
}
l'errore visualizzato è il seguente:

72 C:\Dev-Cpp\esercizi\listav.h `vetlista' undeclared (first use this function)

perchè mi dà questo errore dato che vetlista è dichiarato nella classe???