멤버 함수가없는 한 멤버 기능 포인터를 일반 함수 포인터로 사용할 수 없습니다. 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)();