Non capisco perché in questo metodo:

codice:
template<class tipoelem>
void codap<tipoelem>::fuoricoda()
{
   if(!this->codavuota())
   {
      nodop<tipoelem> *tmp = new nodop<tipoelem>;
      tmp = testa;
      testa = testa->getprec();
      testa->setsuc(NULL);
   }
   else
      cerr << "la coda e' vuota.\n\n";
}
Allochi spazio per un nuovo nodo ma poi fai l' assegnamento tmp=testa.Guarda che così facendo viene perso il riferimento al nuovo nodo allocato.
E questi metodi setprec e getsuc dove stanno?