Intenta utilizar 2 parametros para cada plantilla, osea
Código C++:
Ver originaltemplate <class DATOA, typename DATON>
struct arista;//declaración previa
template <class DATON, typename DATOA>
struct nodo
{
DATON datonodo;
nodo<DATON,DATOA>* siguiente;
arista<DATOA,DATON>* adyacente;
int nPadres;
nodo (char c, nodo* s=0, arista<DATOA, DATON>* a=0, int n=0);
};
lo mismo con arista.
Luego mas abajo, al instanciar, utiliza los tipos a instanciar, olvidandote de DATOA y DATON, utilizados solo en la definicion del template.
Por ejemplo
Código C++:
Ver originaltypedef nodo<int,float>* pNodo;
typedef arista<float,int>* pArista;