오버로드 된 특정 멤버 함수에 대한 포인터를 얻으려고 시도 중입니다. 멤버 함수입니다. 여기에 예제 :오버로드 된 멤버 함수의 주소를 얻는 방법은 무엇입니까?
class C
{
bool f(int) { ... }
bool f(double) { ... }
bool example()
{
// I want to get the "double" version.
typedef bool (C::*MemberFunctionType)(double);
MemberFunctionType pointer = &C::f; // <- Visual C++ complains
}
};
오류 메시지는 "오류 C2440 : '초기화': 'MemberFunctionType'에 '오버로드 기능'에서 변환 할 수 없습니다"
f
가 과부하되지 않은 경우 작동
있지만 위의 예에서. 어떠한 제안?
빠른 테스트를 수행했으며 모든 것이 컴파일됩니다. 코드가 정상적으로 보입니다 - 이것이 원래 코드 인 경우 : D 또한 정확히 그 const-ness를 가지고 있습니까? –
어떤 버전의 MSVC를 사용하고 있습니까? 그것은 2008 년에 잘 작동합니다. – Eclipse
물론. 나는 큰 즐거움을 누릴 것이다 : p –