我想将回调转发给函数指针。所以我声明了一个static (int*) m_pointer1,还有一个方法void RegisterCallback1( (int*)fct)
在 class1.h 中:
public:
int RegisterCallback1( int (*fct) );
private:
static int (*m_Callback1);
在 class1.cpp 中:
int class1::RegisterCallback1( int (*fct) )
{
m_Callback1= fct;
}
然后,我想将回调转发给函数指针:
void class1::Callback1()
{
(*m_Callback1)();
}
但是我得到一个编译器错误“表达式必须有(指针)- 函数类型 我遵循了教程并阅读了有关函数指针的内容,他们似乎以这种方式没有任何问题。有什么想法吗?
编辑: 所以,我声明 (int*)(void)m_Callback1 -Visual Studio 在那里需要一个 void ...- 那么如何调用带参数的registerCallback函数呢?
class1.RegisterCallBack1( ??? - class2::callback -??? );
最佳答案
static int (*m_Callback1)
不声明函数指针,只是指向 int 的指针:您忘记了参数列表。你的意思是:
static int (*m_Callback1)();
和
int RegisterCallback1( int (*fct)() );
关于C++调用静态函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304531/