No puede usar punteros de la función miembro como punteros de función normal, a menos que las funciones de los miembros estén static
. En su lugar deberías usar Boost Bind con una instancia de objeto específica:
boolConfigMap["USE_NEW_VERSION"] = boost::bind(&Config::useNewVersion, someInstanceOfConfig);
La razón por la que los punteros de la función miembro (no estatales) no son lo mismo que los punteros de la función normal (o punteros de la función de miembro estático) es que las funciones de los miembros tienen un argumento oculto "cero", es decir, el es el this
Puntero dentro de la función miembro.
Además, su declaración de la boost::function
Los objetos deben ser solo, por ejemplo
boost::function<bool()>
Que manejarán todo tipo de funciones que devuelven un bool
y no tomando argumentos.
Si su compilador es lo suficientemente nuevo, es posible que también desee cambiar para usar std::function
y std::bind
.
Después de su edición para mostrar con los punteros de la función de los miembros: también debe llamar a los punteros de la función correctamente, como
(config.*configIter->second)();