繁体   English   中英

C ++调用静态函数指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM