Hola de nuevo:
Sigo con mi
grafo y ahora me encuentro con otro problema.
Tengo una clase Grafo. Esta clase tiene un método (en este caso no es recursivo, pero igualmente me ha de tratar varios valores) así:
Código C++:
Ver originaltemplate <typename datonodo_t, typename datoarista_t>
void Grafo<datonodo_t,datoarista_t>::recorrerHijos(pNodo& padre,void (*pfunc)(pArista& a))
{
if (padre->adyacente!=0)
{
pArista A=padre->adyacente;
while (A->siguiente!=0)
{
pfunc();
A=A->siguiente;
}
pfunc();
}
}
Siguiendo los consejos que me dió
CalgaryCorpus en el anterior post relacionado, soy capaz de tratar las aristas que recorre el método...pero desde main.
Ahora tengo otra clase que contiene un Grafo, además de unos tipos abstractos en sus nodos/aristas.
Entonces ahora quiero hacer lo que hacía (por ejemplo imprimir) pero desde un método de la clase nueva.
Ahora tengo dos métodos:
Código C++:
Ver originalvoid MostrarHijos()
{
G.recorrerHijos(padre, imprimir);
}
y
Código C++:
Ver originalvoid imprimir(pArista a)
{
cout<<a->destino->datonodo.LeeNombre()<<endl;
}
Pues bien, me arroja un error:
Código:
<unresolved overloaded function type>)’
Buscando en Google me lleva a un error similar en
StackOverflow, y parece que mi error se debe a que para invocar a la función imprimir() debo instanciar un objeto de la clase, y luego llamar al método de ese objeto.
Incluso aqui ponen un código de ejemplo....lo que pasa es que mis conocimientos no me dan para entender exactamente cómo resuelven el problema:
The = there will capture this, which is what you need to call f2.
(esto que he pegado sólo tiene sentido leyendo el enlace a StackOverflow que he puesto.)
Bueno, pues en definitiva...¿como puedo hacer yo lo mismo?
O concretando...¿cómo uso una método de una clase que tiene otro método como argumento?
Gracias, como siempre!