Возможно ли это?Если так, я не могу понять синтаксис правильно.(Указатель на функцию C ++)
бит фона.Код ниже был сокращен для этого поста.Причина этой реализации состоит в том, чтобы избежать бесконечного списка операторов SWITCH / CASE или IF / ELSEIF;и иметь бесконечный список DECODER_FUNCTION_TABLE (см. ниже).Этот код имеет дело с отраслевым стандартом, который использует мнемонику для обозначения разных вещей, и существуют сотни таких мнемоник.Таким образом, эта часть моего кода предназначена для декодирования определенной передачи мнемоники из другой части кода, которая проходит через переданную запись ... в любом случае, моя трудность заключается в том, чтобы сохранить указатель на функцию-член в структуре вне класса ...
Посмотрите.Я думаю, что код может лучше объяснить;)
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]).*this.*pFn)( A );