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

标签 c++ function pointers

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

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/

相关文章:

function - 有效使用函数作为参数

c++ - 没有运算符 ">>"匹配这些操作数 操作数类型是:std::istream >> double*

c++ - 以Java方式定义C++类

c++ - 仅列出目录中的文件夹

function - StructScan 未知结构 slice [GO]

C编程指针数组读取文件

c++ - 对此指针程序提供反馈

c++ - 第一个元素在插入排序期间未排序

c++ - 将 invoke_result 与 void 参数类型一起使用?

function - 有关如何连接持久函数依赖注入(inject)的示例