[英]Member Function Pointers in C++
我正在嘗試從兩個成員函數之一中檢索一個布爾值。 我想調用一個成員函數(main),它將指向基於傳遞給main的值的兩個成員函數之一......這是我到目前為止所擁有的:
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 *)(void)'轉換為'BOOL'
這主要是我感興趣的理論,我知道還有其他方法可以得到這樣一個簡單的答案...在此先感謝。
像這樣:
BOOL result = m_routine->MainRoutine(0)();
這是因為你從MainRoutine(0)
返回函數指針,因此你需要另一對括號來調用它指向的函數。
順便說一句,您返回普通函數指針,而不是成員函數指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.