Estaba intentando hacer un programa para manejar grafos.
Lo he hecho poniendo en cada nodo un dato char, y sin peso en las aristas.
Me funciona, pero ahora quiero hacerlo con plantillas, para que el nodo acepte en principio cualquier tipo de datos básico, y de paso, ponerle peso a las aristas.
Esta es la definición de las clases que sí funcionan:
Código C++:
Ver original
struct arista;//declaración previa struct nodo { char nombre; nodo* siguiente; arista* adyacente; int nPadres; nodo (char c, nodo* s=0, arista* a=0, int n=0); }; struct arista { nodo* destino; arista* siguiente; arista* anterior; arista(nodo* d=0, arista* s=0, arista* an=0); }; typedef nodo* pNodo; typedef arista* pArista;
y éste es el intento para pasar a plantillas:
Código C++:
Ver original
#include <iostream> template <class DATOA> struct arista;//declaración previa template <class DATON> struct nodo { DATON datonodo; nodo<DATON>* siguiente; arista<DATOA>* adyacente; int nPadres; nodo (char c, nodo* s=0, arista* a=0, int n=0); }; template <class DATOA> struct arista { DATOA datoarista; nodo<DATON>* destino; arista<DATOA>* siguiente; arista<DATOA>* anterior; arista(nodo* d=0, arista* s=0, arista* an=0); }; typedef nodo<DATON>* pNodo; typedef arista<DATOA>* pArista;
Pero parece que no voy bien encaminado, ya que el compilador me dice que
DATOA no se declaró en ese ambito refiriéndose a la arista que se encuentra en nodo
e igualmente DATON no se declaró en ese ambito refiriéndose al nodo que se encuentra en arista
¿Alquien me sabe decir cómo implementar las plantillas en éste caso?
Como siempre, gracias por adelantado!!