salve, sn riuscito a implementare la classe lista e funziona. ora, però, sto cercando di renderla una classe template ma nel metodo primolista mi da un errore di compilazione. questo è il codice della calsse:
listap.h
codice:
#ifndef _LISTAP_H
#define _LISTAP_H
#include <iostream>
using namespace std;
template<class T> class listap
{
private:
typedef int tipoelem;
struct nodo
{
nodo *precedente;
T elemento;
nodo *successivo;
};
typedef T tipoelem;
public:
typedef nodo * posizione;
posizione sentinella;
listap();
void crealista();
bool listavuota();
posizione primolista();
bool finelista(posizione);
void inslista(posizione &, tipoelem);
void canclista(posizione &);
tipoelem leggilista(posizione);
void scrivilista(posizione &, tipoelem);
posizione predlista(posizione);
posizione succlista(posizione);
};
#endif
listap.cpp
codice:
#include "listap.h"
template<class T> listap<T>::listap()
{
crealista();
}
template<class T> void listap<T>::crealista()
{
sentinella = (posizione)malloc(sizeof(nodo));
tipoelem elemnullo = 0;
sentinella->precedente = sentinella;
sentinella->elemento = elemnullo;
sentinella->successivo = sentinella;
}
template<class T> bool listap<T>::listavuota()
{
return((sentinella->precedente == sentinella) && (sentinella->successivo == sentinella));
}
template<class T> listap::posizione listap<T>::primolista()
{
return(sentinella->successivo);
}
template<class T> bool listap<T>::finelista(posizione p)
{
return(p->successivo == sentinella);
}
template<class T> void listap<T>::inslista(posizione &p, tipoelem elem)
{
posizione temp = new nodo;
temp->elemento = elem;
temp->precedente = p->precedente;
temp->successivo = p;
p->precedente->successivo = temp;
p->precedente = temp;
p = temp;
}
template<class T> void listap<T>::canclista(posizione &p)
{
posizione temp = p;
p->precedente->successivo = p->successivo;
p->successivo->precedente = p->precedente;
p = p->successivo;
delete(temp);
}
template<class T> listap<T>::tipoelem listap::leggilista(posizione p)
{
return(p->elemento);
}
template<class T> void listap<T>::scrivilista(posizione &p, tipoelem elem)
{
p->elemento = elem;
}
template<class T> listap<T>::posizione listap::predlista(posizione p)
{
return(p->precedente);
}
template<class T> listap<T>::posizione listap::succlista(posizione p)
{
return(p->successivo);
}
l'errore che mi viene notificato è il seguente:
`template<class T> class listap' used without template parameters
ho provato a cercare dei suggerimenti in rete ma non sn riuscito a risolvere il problema. in cosa avrei sbagliato???