scusami ho fatto delle modifiche, sperando di risolvere il problema. il metodo era questo:

template<class tipoelem>
void codap<tipoelem>::fuoricoda()
{
if(!this->codavuota())
{
nodop<tipoelem> *tmp=testa;
testa = testa->getprec();
testa->setsuc(NULL);
delete tmp;
}
else
cerr << "la coda e' vuota.\n\n";
}

e va in crash all'istruzione delete tmp;