ciao a tutti, sto imparando a creare le strutture dati con il C++ e sto creando la classe cella per le liste con puntatori. in pratica la libreria relativa alla classe cella viene creata ma quando creo il main per testare se la classe è stata creata con successo mi dà errore. posto la classe cella e il main e l'errore che mi viene visualizzato:


classe cella

codice:
#ifndef _CELLAP_H
#define _CELLAP_H

template<class T>
class Cellap
{
   public:
      typedef T tipoelem;
      
      Cellap();
      ~Cellap();
      
      void scrivicella(tipoelem);
      tipoelem leggicella();
      
      void setprec(Cellap *);
      Cellap *getprec();
      
      void setsucc(Cellap *);
      Cellap *getsucc();
      
      bool operator==(Cellap);
   private:
      Cellap *precedente;
      tipoelem elemento;
      Cellap *successivo;
};

template<class T> Cellap<T>::Cellap()
{}

template<class T> Cellap<T>::~Cellap()
{}

template<class T>void  Cellap<T>::scrivicella(tipoelem element)
{
   elemento = element;
}

template<class T> tipoelem Cellap<T>::leggicella()
{
   return elemento;
}

void template>class T> Cellap<T>::setprec(Cellap *prec)
{
   precedente = prec;
}

Cellap *template<class T> Cellap<T>::getprec()
{
   return(precedente);
}

void template<class T> Cellap<T>::setsucc(Cellap *succ)
{
   successivo = succ;
}

Cellap *template<class T> Cellap<T>::getsucc()
{
   return(successivo);
}

bool template<class T> Cellap<T>::operator==(Cellap cella)
{
   return(this.elemento == cella.elemento);
}

#endif

main

codice:
#include "Cellap.h"
#include <iostream>

using namespace std;

int main()
{
    Cellap<int> cilla;
    tipoelem el;
    
    cout << "inserire l'elemento: ";
    cin >> el;
    
    cilla.scrivicella(el);
    
    cout << "\nl'elemento inserito è : " << cilla.leggicella();
    
    system("pause");
    return 0;
}
quando mado in compilazione il main, mi da l'errore alla linea 40:
expected constructor, destructor, or type conversion before "Cellap"

dove ho sbagliato???