Necesito llamar a un método que espera un puntero de función, pero lo que realmente quiero pasar es un funtor. He aquí un ejemplo de lo que estoy tratando de hacer:Punteros de función para funciones de miembro en C++
#include <iostream>
#include "boost/function.hpp"
typedef int (*myAdder)(int);
int adderFunction(int y) { return(2 + y); }
class adderClass {
public:
adderClass(int x) : _x(x) {}
int operator() (int y) { return(_x + y); }
private:
int _x;
};
void printer(myAdder h, int y) {
std::cout << h(y) << std::endl;
}
int main() {
myAdder f = adderFunction;
adderClass *ac = new adderClass(2);
boost::function1<int, int> g =
std::bind1st(std::mem_fun(&adderClass::operator()), ac);
std::cout << f(1) << std::endl;
std::cout << g(2) << std::endl;
printer(f, 3);
printer(g, 4); // Is there a way to get this to work?
}
no he sido capaz de encontrar una manera de conseguir la última línea, la impresora (g, 4), para compilar. ¿Hay alguna manera de hacer que esto funcione? Las únicas cosas bajo mi control son el método "main" y la clase "adderClass".
Eso funcionaría, pero (olvidé mencionar), el método "impresora" está en el código que no puedo cambiar. – JamieC
Todo lo que está bajo mi control es el método "main" y la clase "adderClass". – JamieC