私は静的関数を持っていますfoo
が、呼び出したいAPIは(同様のインターフェースの)ファンクターへのポインターのみを受け入れます。foo
APIに渡す方法はありますか? foo
または、ファンクターに関して再実装する必要があります。
コード例:
template<typename ReturnType, typename ArgT>
struct Functor: public std::unary_function<ArgT,ReturnType>
{
virtual ~Functor () {}
virtual ReturnType operator()( ArgT) = 0;
};
// I have a pre written function
static int foo (int a) {
return ++a;
}
// I am not allowed to change the signature of this function :(
static void API ( Functor<int,int> * functor ) {
cout << (*functor) (5);
}
int main (void) {
API ( ??? make use of `foo` somehow ??? );
return 0;
}
私の質問はAPIを呼び出すことです.実装Functor
は唯一の解決策ですかfoo
、それを渡すために使用できる方法がありAPI
ますか?
boost::bind
ここで役立ちますか?
つまりboost::bind(foo, _1)
、関数オブジェクトを作成してからfoo
、関数オブジェクトから目的のファンクターを形成する方法があれば?