C ++调用静态函数指针

时间:2012-04-24 19:15:49

标签: c++ pointers static function-pointers

我想将回调转发给函数指针。所以我声明一个静态(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)();
}

但是我得到了一个编译错误“Expression必须有(指针) - 函数类型 我已经按照教程和阅读有关函数指针的方法,他们似乎这样做没有任何问题。有什么想法吗?

编辑: 所以,我声明(int *)(void)m_Callback1 -Visual Studio需要一个空白...- 那么如何使用参数?

调用registerCallback函数
class1.RegisterCallBack1(  ??? - class2::callback -??? );

3 个答案:

答案 0 :(得分:7)

static int (*m_Callback1)没有关闭函数指针,只是指向int的指针:你忘记了参数列表。你的意思是:

static int (*m_Callback1)();

int RegisterCallback1( int (*fct)() );

答案 1 :(得分:6)

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

答案 2 :(得分:1)

你可以尝试通过对回调函数的签名使用typedef来限制Oli和Dave指出的missing()错误:typedef int (*)() CallBack;这至少有一个让你想一想精确数字的优点括号而不是代码中使用此类函数的每个点。