関数ポインタを必要とするメソッドを呼び出す必要がありますが、実際に渡す関数はファンクタです。ここで私は何をしようとしているの例です:私は最後の行を取得する方法を見つけることができませんでした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?
}
は、プリンタ(G、4)、コンパイルします。これを動作させる方法はありますか?私のコントロールの唯一のものは、メソッドmainとクラスadderClassです。そのような
それはうまくいくが、(私は言及するのを忘れていた)メソッド "printer"はコードで変更できない。 – JamieC
私のコントロールにあるのは、メソッドmainとクラスadderClassです。 – JamieC