[英]C++ calling static function pointer
我想将回调转发给函数指针。 所以我声明了一个静态(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)() );
您尚未声明函数指针,而已声明普通数据指针。 您在声明末尾缺少()。
您可以尝试使用typedef作为回调函数的签名来限制Oli和Dave指出的missing()错误: typedef int (*)() CallBack;
这至少具有让您仔细考虑方括号的确切数目的优点,而不是让您在代码中使用该功能的每个地方考虑一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.