당신이 무엇을의 (A 멤버 함수 포인터 전화 :
typedef struct _DECODER_FUNCTION_RECS
{
ISO_MNEMONIC_ID Mnemonic;
void (Database::*pFn)(Database::Rec *);
}DECODER_FUNCTION_RECS;
DECODER_FUNCTION_RECS DECODER_FUNCTION_TABLE[] = {
SFP, &Database::Decode_SFP,
KOG, &Database::Decode_KOG
};
void Database::DecodedDescription(Rec *A)
{
int i = 0;
bool Found = false;
while(i < DECODER_FUNCTION_TABLE_COUNT && !Found)
{
if(DECODER_FUNCTION_TABLE[i].Mnemonic == A->Mnemonic)
Found = true;
else
i++;
}
if(Found)
(([DECODER_FUNCTION_TABLE[i]).*this.*pFn)(A);
}
void Database::Decode_SFP(Rec *A)
{
// do decode stuff on A
}
내가 해결하기 위해 노력하고있어 디테일이 라인이다) 나는 코드가 더 잘 설명 할 수 있습니다 생각 주위 DECODER_FUNCTION_TABLE[i].pFn
을 괄호를 넣어 수
(this->*DECODER_FUNCTION_TABLE[i].pFn)(A);
로)라고하지만, 멤버 액세스 연산자 .
는 더 높은 우선 순위를 가지고 있어요 멤버 함수 연산자 ->*
보다
출처
2011-04-21 12:01:07
Xeo
체크 아웃이 답변에 내 대답에있어 도움이 되거 것입니다 몇 가지 간단한 예제를 썼다 : http://stackoverflow.com/questions/1915880/boostbind-boostfunction-pointers-to-overloaded-or-templated-member-function/1917145#1917145 – Paul