Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/06/2016, 04:57
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Como declarar un tipo

Buenas....voy a ver si en estos próximos 10-15 días soy capaz de terminar y darle un empujón a un proyecto que empecé hace más de 2 años y que lleva parado desde el verano pasado.

Es un programa que usa un grafo para hallar valores y datos. En su momento estuve preguntando sobre ello aquí.

Bueno, al grano. Una de las cosas que quiero hacer es que la clase Grafo funcione con plantilla para aceptar cualquier clase de datos en el nodo y en la arista. Eso está hecho desde el principio.

Pero luego, tengo unos functores que uso para tareas como recorrer el grafo. Estos functores no están parametrizados (Están ligados a los tipos de datos del programa que hace uso de él), así que quería solucionar esto antes de seguir, ya que por culpa de esto, no sólo los functores sino el propio grafo está ligado al tipo de datos concreto, y ya puesto me gustaría que fuera más flexible.

En fin, después de tanta historia, mi problema es que los functores no reconocen el tipo definido en Grafo, y no sé cómo arreglar esto.

Pongo para no cargar mucho la parte del Grafo que interesa:
Código C++:
Ver original
  1. //esto son functores
  2. class TratarArista;
  3. class TratarNodo;
  4. class TratarAristaConNiveles;
  5. class ImprimirArbol;

El nodo (con declaración previa de la arista)
Código C++:
Ver original
  1. template <typename DATOA, typename DATON>
  2. struct arista;//declaración previa
  3.  
  4. template <typename DATON, typename DATOA>
  5. struct nodo
  6. {
  7. ....................
La arista
Código C++:
Ver original
  1. template <typename DATOA, typename DATON>
  2. struct arista
  3. {
  4. ...................

Y el grafo
Código C++:
Ver original
  1. template <typename DATON, typename DATOA>
  2. class Grafo
  3. {
  4. public:
  5.  
  6.     typedef DATON datonodo_t;
  7.     typedef DATOA datoarista_t;
  8.     typedef nodo<datonodo_t,datoarista_t>* pNodo;
  9.     typedef arista<datoarista_t,datonodo_t>* pArista;
  10.     typedef nodo<datonodo_t,datoarista_t> t_nodo;
  11.     typedef arista<datoarista_t,datonodo_t> t_arista;
  12.     //constructor
  13. ................
__________________
Mi calculadora en Qt