Вы не можете использовать указатели функций члена в качестве нормальных указателей функций, если не функционируют функции. static
. Анкет Вместо этого вы должны использовать Повысить привязку с конкретным экземпляром объекта:
boolConfigMap["USE_NEW_VERSION"] = boost::bind(&Config::useNewVersion, someInstanceOfConfig);
Причина, по которой (нестатические) указатели функций-членов не совпадают с нормальными указателями функций (или статическими указателями функций), заключается в том, что функции членов имеют скрытый аргумент «Zeroeth», то есть this
Указатель внутри функции элемента.
Кроме того, ваше объявление о boost::function
Объекты должны быть только например, например,
boost::function<bool()>
Это будет обрабатывать все типы функций, возвращающих bool
и не принимая аргументов.
Если ваш компилятор достаточно новый, вы также можете изменить, чтобы использовать std::function
а также std::bind
.
После того, как ваше редактирование показывает с указателями функции члена: вы должны правильно вызвать указатели функции, например
(config.*configIter->second)();