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//esto son functores
class TratarArista;
class TratarNodo;
class TratarAristaConNiveles;
class ImprimirArbol;
El nodo (con declaración previa de la arista)
Código C++:
Ver originaltemplate <typename DATOA, typename DATON>
struct arista;//declaración previa
template <typename DATON, typename DATOA>
struct nodo
{
....................
La arista
Código C++:
Ver originaltemplate <typename DATOA, typename DATON>
struct arista
{
...................
Y el grafo
Código C++:
Ver originaltemplate <typename DATON, typename DATOA>
class Grafo
{
public:
typedef DATON datonodo_t;
typedef DATOA datoarista_t;
typedef nodo<datonodo_t,datoarista_t>* pNodo;
typedef arista<datoarista_t,datonodo_t>* pArista;
typedef nodo<datonodo_t,datoarista_t> t_nodo;
typedef arista<datoarista_t,datonodo_t> t_arista;
//constructor
................