C++调用静态函数指针

Dav*_*ard 1 c++ static pointers function-pointers

我想将回调转发给函数指针.所以我声明了一个静态(int*)m_pointer1,以及一个方法void RegisterCallback1((int*)fct)

在class1.h:

public:
   int RegisterCallback1( int (*fct) );
private:
   static int (*m_Callback1);
Run Code Online (Sandbox Code Playgroud)

在class1.cpp中:

int class1::RegisterCallback1( int (*fct) )
{
    m_Callback1= fct;
}
Run Code Online (Sandbox Code Playgroud)

那么,我想将回调转发给函数指针:

void class1::Callback1()
{
   (*m_Callback1)();
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个编译器错误"表达必须有(指针) - 函数类型我已经按照教程和阅读有关函数指针,他们似乎这样做没有任何问题.任何想法为什么?

编辑:所以,我声明(int*)(void)m_Callback1 -Visual Studio需要一个空格......-然后如何用参数调用registerCallback函数?

class1.RegisterCallBack1(  ??? - class2::callback -??? );
Run Code Online (Sandbox Code Playgroud)

Dav*_*ave 7

static int (*m_Callback1)不会对函数指针进行declate,只是指向int的指针:你忘记了参数列表.你的意思是:

static int (*m_Callback1)();
Run Code Online (Sandbox Code Playgroud)

int RegisterCallback1( int (*fct)() );
Run Code Online (Sandbox Code Playgroud)


Oli*_*rth 6

你还没有声明一个函数指针,你已经声明了一个普通的数据指针.您在声明结尾处缺少().