我需要調用一個需要函數指針的方法,但是我真正想傳遞給它的方法是一個函子。這裏是什麼,我試圖做一個例子:函數指針在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?
}
我一直沒能找到一種方式來獲得的最後一行,打印機(克,4),進行編譯。有沒有辦法讓這個工作?在我的控制中唯一的東西是方法「主」和類「adderClass」。
這將工作,但(我忘了提及),方法「打印機」是在代碼中,我不能改變。 – JamieC 2009-12-11 14:02:54
我掌握的所有東西都是「main」方法和「adderClass」類。 – JamieC 2009-12-11 14:03:40