コードは次のとおりです。
#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 ポインターを正確に要求します。
問題を解決する方法についてアドバイスが必要です。ありがとうございました。