Busqueda.h:
Código:
#ifndef CLASECITA_H_INCLUDED #define CLASECITA_H_INCLUDED #include "BinaryTree.cpp" class Busqueda{ private: int x; int y; public: int getX(); void output2(int a); }; #endif // CLASECITA_H_INCLUDED
Busqueda.cpp:
Código:
Lo que tengo es una la clase Busqueda definida en el .h y desarrollada en el .cpp. Ademàs el .cpp tiene dos funciones las cuales se van a usar como parametro para un mètodo que requiere funciones como parametro. El tema es que cuando hago arbol.SetInOrder(output1) siendo output1 una funciòn desarrollada en ese mismo .cpp no tira error. Pero cuando hago arbol.SetInOrder(output2), siendo output2 un mètodo pùblico de la clase Busqueda, si tira el siguiente error:#include <iostream> #include <string> #include "clasecita.h" #include "BinaryTree.cpp" using namespace std; #ifndef NULL #define NULL 0 #endif void output1(int a){ cout<<a; } void Busqueda::output2(int a){ cout<<a; } int Busqueda::getX(){ return this->x; BinTree<int> arbol; arbol.SetInOrder(output1); arbol.SetInOrder(output2); //Linea 21 arbol.InOrder(); }
Cita:
EL mètodo SetInOrder toma como parametro: void (*funcion) (type data). Por què me permite pasarle a SetInOrder como parametro una funciòn de ese àmbito y no a su mètodo?.. Habia leido algo que para pasar un puntero de una funcion es distinto que pasar un puntero de un mètodo. Como lo hago entocnes?? MUCHAS GRACIAS! Busqueda.cpp|21|error: no matching function for call to `BinTree<int>::SetInOrder(<unknown type>)'|
BinaryTree.cpp|173|note: candidates are: void BinTree<type>::SetInOrder(void (*)(type)) [with type = int]|
BinaryTree.cpp|173|note: candidates are: void BinTree<type>::SetInOrder(void (*)(type)) [with type = int]|