Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/01/2014, 03:39
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Problemas con clases y plantillas

Hola:
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
  1. struct arista;//declaración previa
  2.  
  3. struct nodo
  4. {
  5.     char nombre;
  6.     nodo* siguiente;
  7.     arista* adyacente;
  8.     int nPadres;
  9.     nodo (char c, nodo* s=0, arista* a=0, int n=0);
  10. };
  11.  
  12. struct arista
  13. {
  14.     nodo* destino;
  15.     arista* siguiente;
  16.     arista* anterior;
  17.     arista(nodo* d=0, arista* s=0, arista* an=0);
  18. };
  19.  
  20. typedef nodo* pNodo;
  21. typedef arista* pArista;

y éste es el intento para pasar a plantillas:
Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. template <class DATOA>
  4. struct arista;//declaración previa
  5.  
  6. template <class DATON>
  7. struct nodo
  8. {
  9.     DATON datonodo;
  10.     nodo<DATON>* siguiente;
  11.     arista<DATOA>* adyacente;
  12.     int nPadres;
  13.     nodo (char c, nodo* s=0, arista* a=0, int n=0);
  14. };
  15.  
  16. template <class DATOA>
  17. struct arista
  18. {
  19.     DATOA datoarista;
  20.     nodo<DATON>* destino;
  21.     arista<DATOA>* siguiente;
  22.     arista<DATOA>* anterior;
  23.     arista(nodo* d=0, arista* s=0, arista* an=0);
  24. };
  25.  
  26. typedef nodo<DATON>* pNodo;
  27. 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!!