Я пытаюсь получить логическое значение из одной из двух функций-членов. Я хотел бы вызвать функцию-член (основной), который будет указывать на одну из двух функций-членов на основе значения, переданного основной ... вот то, что я до сих пор:Member Function Указатели в C++
class CRoutine{
...
BOOL (*MainRoutine(BOOL opcode))();
static BOOL SubRoutine1();
static BOOL SubRoutine2();
...
};
BOOL (*CRoutine::MainRoutine(BOOL opcode))()
{
switch (opcode)
{
case false:
MessageBox(NULL, L"Routine1", L"Routine1", MB_OK);
return &CRoutine::SubRoutine1;
case true:
MessageBox(NULL, L"Routine2", L"Routine2", MB_OK);
return &CRoutine::SubRoutine2;
default:
MessageBox(NULL, L"Default Routine Selected", L"Routine1", MB_OK);
return &CRoutine::SubRoutine1;
}
}
BOOL CRoutine::SubRoutine1()
{
MessageBox(NULL, L"Routine1", L"Routine1", MB_OK);
return true;
}
BOOL CRoutine::SubRoutine2()
{
MessageBox(NULL, L"Routine2", L"Routine2", MB_OK);
return false;
}
winMain(...)
{
...
m_routine = new CRoutine();
BOOL result = m_routine->MainRoutine(0);
...
}
Мой вопрос:
Как мне вызвать MainRoutine(), чтобы получить логическое значение из SubRoutine1() или SubRoutine2(). Когда я запускаю программу, как я получаю следующее сообщение об ошибке:
ошибка C2440: «инициализации»: не удается преобразовать из «BOOL (__cdecl *) (ничтожной)» до «BOOL»
В основном это теория, которую я Я заинтересован, я знаю, что есть другие способы получить такой простой ответ ... спасибо заранее.
Использование 'bool' неявно как' int' и наоборот, вероятно, не очень хорошая идея. – AJG85
C++ имеет настоящий тип 'bool'ean; почему вы используете макрос BOOL? –