首先明确一点即回调函数需要是静态函数,原因是普通的C++成员函数都隐含了一个this指针作为参数,这样使得回调函数的参数和成员函数参数个数不匹配。
若不想使用C式函数作为回调函数呢?主要有以下几种解决方法:
- 使用static修饰成员函数。static不含this指针。
- 不用static修饰的成员函数,需要借助中间变量来访问。
- 在回调函数中增加一个变量,类型为该类的类型,作为this指针的传递。
有时候成员函数并不能使用static进行修饰,此时可采用第二种方法,代码示例如下:
class A
{
public:
static void staticmember(){
cout<<"static"