gpt4 book ai didi

c++ - C++ 中的成员函数指针

转载 作者:行者123 更新时间:2023-11-28 03:39:33 25 4
gpt4 key购买 nike

我正在尝试从两个成员函数之一中检索 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com