ciao a tutti, sto creando una struttura dati astratta LISTA con i seguenti codici:
listap.h
codice:
#ifndef _listap_h
#define _listap_h
#include <iostream>
#include <stdlib.h>
template<class tipoelem>
class listap
{
public:
typedef listap *posizione;
listap();
~listap();
void crealista();
bool listavuota();
posizione primolista();
bool finleista(posizione);
tipoelem leggilista(posizione);
void scrivilista(posizione, tipoelem);
posizione succlista(posizione);
posizione predlista(posizione);
void inslista(posizione, tipoelem);
void canclista(posizione);
private:
listap *precedente;
tipoelem elemento;
listap *successivo;
};
#endif
listap.cpp
codice:
#include "listap.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
template<class tipoelem>
listap<tipoelem>::listap()
{
this->crealista();
}
template<class tipoelem>
listap<tipoelem>::~listap()
{
delete elemento;
}
template<class tipoelem>
void listap<tipoelem>::crealista()
{
precedente = NULL;
elemento = new(tipoelem);
successivo = NULL;
}
template<class tipoelem>
bool listap<tipoelem>::listavuota()
{
return((precedente == NULL) && (successivo == NULL));
}
template<class tipoelem>
listap<tipoelem>::posizione listap<tipoelem>::primolista()
{
return(this);
}
template<class tipoelem>
bool listap<tipoelem>::finelista(listap<tipoelem>::posizione pos)
{
return(this->succlista(pos));
}
template<tipoelem>
tipoelem listap<tipoelem>::leggilista(listap<tipoelem>::posizione pos)
{
return(pos->elemento);
}
template<class tipoelem>
void listap<tipoelem>::scrivilists(listap<tipoelem>::posizione pos, tipoelem elem)
{
pos->elemento = elem;
}
template<tipoelem>
listap<tipoelem>::posizione listap<tipoelem>::succlista(listap<tipoelem>::posizione pos)
{
return(pos->successivo);
}
template<tipoelem>
listap<tipoelem>::posizione listap<tipoelem>::predlista(listap<tipoelem>::posizione pos)
{
return(pos->precedente);
}
template<tipoelem>
void listap<tipoelem>::inslista(posizione pos, tipoelem elem)
{
posizione temp = NULL;
temp->successivo = pos;
temp->precedente = pos->precedente;
(pos->precedente)->successivo = temp;
pos->precedente = temp;
temp->elemento = elem;
pos = temp;
}
template<tipoelem>
void listap<tipoelem>::canclista(posizione pos)
{
posizione temp = pos;
(temp->precedente)->successivo = temp->successivo;
(temp->successivo)->precedente = temp->precedente;
pos = pos->successivo;
delete(temp);
}
quando compilo la classe mi dà il seguente errore alla riga 34:
34 C:\Dev-Cpp\esercizi\listap.cpp expected constructor, destructor, or type conversion before "listap"
34 C:\Dev-Cpp\esercizi\listap.cpp expected `;' before "listap" .
io penso che sia dovuto al fatto che ho usato la typedef nel file listap.h.
perchè mi dà questo errore??? io devo per forza usare il tipo posizione.
vi prego aiutatemi.