gpt4 book ai didi

C++将带参数的函数指针传递给函数

转载 作者:行者123 更新时间:2023-11-30 02:37:09 25 4
gpt4 key购买 nike

我想我误解了函数指针的工作原理。在这个例子中:

class Helper
{
public:

typedef void (*SIMPLECALLBK)(const char*);
Helper(){};
void NotifyHelperbk(SIMPLECALLBK pCbk)
{ m_pSimpleCbk = pSbk; }
private:
SIMPLECALLBK m_pSimpleCbk;

}

// where i call the func
class Main
{
public:
Main(){};
private:
Helper helper
void SessionHelper(const char* msg);

}

Main.cpp

void Main::SessionHelper(const char* msg)
{
....
}

helper.NotifyHelperbk(&Main::SessionHelper);

我收到以下错误:

error C2664: 'Main::NotifyHelperbk' : cannot convert parameter 1 from 'void (__thiscall Main::* )(const char *)' to 'Helper::SIMPLECALLBK'
1> There is no context in which this conversion is possible

我在这里错过了什么?

最佳答案

Main::SessionHelper 是一个非静态方法。所以向它添加 static 以便能够将其用作函数指针。或者使用成员方法指针(你需要一个实例来调用它)。

关于C++将带参数的函数指针传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31941177/

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