Ich muss eine Methode aufrufen, die einen Funktionszeiger erwartet, aber in Wirklichkeit möchte ich ihr einen Funktor übergeben. Hier ist ein Beispiel für das, was ich zu tun versuche:
#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?
}
Ich habe keine Möglichkeit gefunden, die letzte Zeile, printer(g, 4), zu kompilieren. Gibt es eine Möglichkeit, dies zum Laufen zu bringen? Die einzigen Dinge, die ich kontrollieren kann, sind die Methode "main" und die Klasse "adderClass".