class Foo
{
double f1( int x, std::string s1 );
double f2( int x, SomeClass s2 );
}
本質的に作成するfooのインスタンスなしでFoo.f1のs1をバインドできるようにしたい
typedef double (Foo::* MyFooFunc)( int )
MyFooFunc func1 = boost::bind( &Foo::f1, _1, _2, "some string" );
MyFooFunc func2 = boost::bind( &Foo::f2, _1, _2, SomeClass );
次に、func1とfunc2をパラメーターとして他の関数に渡します。この関数内で、Fooは最終的にバインドされます。
void SomeOtherFunction( MyFooFunc func )
{
Foo foo;
boost::function< double (int) > finalFunc =
boost::bind( func, foo, _1 );
}
質問:これは可能ですか?はいの場合、1)それを達成する方法は?2)MyFooFuncの宣言は何ですか?