C ++callback函数

我正在使用afxwin SetTimer函数设置一个计时器。 这个函数接收三个参数,其中一个是callback函数。

我在一个类中设置了一个callback函数(我们称之为NS),并试图将其作为parameter passing。 然而,编译器抱怨说:

void (__stdcall NS::*) (HWND, UINT, UINT_PTR, DWORD); 

不一样:

 void (__stdcall *) (HWND, UINT, UINT_PTR, DWORD); 

我该怎么办?

Solutions Collecting From Web of "C ++callback函数"

使函数static *。 否则,它甚至不是一个函数,而是一个成员函数,这是一个非常不同的动物。 而且,正如你所说的那样,“将类的函数作为回调函数传递”是没有意义的:非静态成员函数与该类的对象实例的状态相关联。

(另外,在这个网站上搜索,这个问题已经被提出了一百万次以上,并且在整个SO中有很多好的选择。

*)@James指出,如果回调函数有一个C接口,这是不够的,在这种情况下,您还需要一个免费的extern "C"包装函数。