我試圖從兩個成員函數之一檢索一個布爾值。我想打電話給一個成員函數(主),將指向基於傳遞給主值的兩個成員函數一個......這裏是我到目前爲止有: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 2012-03-14 20:40:46
C++有一個真正的'bool'ean類型;你爲什麼使用'BOOL'宏? – 2012-03-14 20:49:20