コードは次のとおりです。
#include <functional>
using namespace std::tr1;
typedef void(*fp)(void);
void foo(void)
{
}
void f(fp)
{
}
int main()
{
function<void(void)> fun = foo;
f(fun); // error
f(foo); // ok
}
関数呼び出しの間にデータを保存する必要があるため、もともと非静的クラスメソッドから関数ポインターを作成する必要があります。std::tr1::bind
とを試しboost::bind
ましたが、ポインターではなく機能オブジェクトを返します。これは、ご覧のとおり、純粋な機能ポインターに「キャスト」できません。関数シグネチャ ( SetupIterateCabinet
) は、純粋な func ポインターを正確に要求します。
問題を解決する方法についてアドバイスが必要です。ありがとうございました。