我正在尝试从两个成员函数之一中检索 bool 值。我想调用一个成员函数 (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() 获取 bool 值。当我按原样运行程序时,出现以下错误:
错误 C2440:“正在初始化”:无法从“BOOL (__cdecl *)(void)”转换为“BOOL”
这主要是我感兴趣的理论,我知道还有其他方法可以获得如此简单的答案...提前致谢。
最佳答案
像这样:
BOOL result = m_routine->MainRoutine(0)();
因为你从MainRoutine(0)
返回函数指针,所以你需要另外一对括号来调用它所指向的函数。
顺便说一句,你返回的是普通函数指针,而不是成员函数指针。
关于c++ - C++ 中的成员函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9709858/