2つのメンバ関数のいずれかからブール値を取得しようとしています。メンバ関数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);
...
}
私の質問です:私はメインに渡された値に基づいて、2つのメンバ関数の一つを指しますその(メイン)メンバ関数を呼び出すしたいと思います...ここで私はこれまで持っているものである
SubRoutine1()またはSubRoutine2()からブール値を取得するには、MainRoutine()をどのように呼び出す必要がありますか。
エラーC2440:「初期化すると、」:「BOOL」から「BOOL(__cdecl *)(無効)」から変換できません
は、これは主に理論である私は、私は次のエラーを取得するあるように私はプログラムを実行すると、私が興味を持っているのは、そのような簡単な答えを得るための他の方法があることを知っています...事前に感謝します。このよう
'bool'を' int'として暗黙的に使用すると、おそらくそれは良い考えではありません。 – AJG85
C++には本当の 'bool'ean型があります。なぜあなたは 'BOOL'マクロを使用していますか? –