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)
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)