我想将一个回调函数转发给函数指针。所以,我宣布一个静态(INT *)m_pointer1,还有一种方法无效RegisterCallback1((INT *)FCT)C++调用静态函数指针
在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 -???);
这是伟大的,所有,但那么我怎么用参数调用registerCallback1函数? class1.RegisterCallBack1(??? - class2 :: callback - ???); – 2012-04-24 19:45:30
@David:假设'class2 :: callback'是'static','c1.RegisterCallBack1(&class2 :: callback)'。 – ildjarn 2012-04-24 19:48:35
这给出了另一个错误:void(__stdcall *)()的参数与void(*)()类型的参数不兼容。如果我添加__stdcall函数指针decleration,我得到链接错误,说m_callback1()不能在class1(不是class2)中找到 – 2012-04-24 19:54:27