您不能将成员函数指针用作正常函数指针,除非成员函数为 static
. 。您应该使用 增强结合 具有特定对象实例:
boolConfigMap["USE_NEW_VERSION"] = boost::bind(&Config::useNewVersion, someInstanceOfConfig);
(非静态)成员函数指针与正常函数指针(或静态成员函数指针)不同的原因是,成员函数具有隐藏的“零”参数,那就是 this
成员功能内部的指针。
另外,您的声明 boost::function
对象应该只是例如
boost::function<bool()>
这将处理所有类型的函数返回 bool
也没有提出争论。
如果您的编译器足够新,您也可能想更改以使用 std::function
和 std::bind
.
编辑以显示成员函数指针后:您也必须正确调用功能指针,例如
(config.*configIter->second)();