C++类的成员函数做回调函数
回调函数原理:
通过函数指针的传递,使被注册的一方可以通过函数指针找到函数地址,从而实现调用注册进来的函数。
C++成员函数和普通C函数的区别:
C++成员函数隐藏传递一个函数参数(this指针),C++通过传递指向自己的this指针可以使成员函数访问自己的成员变量和成员函数。
成员函数作为回调函数
在注册毁掉函数时,由于隐藏参数this指针就会因为类型不匹配从而导致回调函数注册失败。在网上查询了一些资料可以通过以下几种方法实现成员函数作为回调函数:
- 定义一个普通函数或友元函数为回调函数,并在该函数中调用类的成员函数
- 使用静态成员函数作为回调函数。
使用方法1的时候,需要new一个对象去调用成员函数。
使用方法2的时候,因为静态成员函数不适用this指针作为隐藏参数,这样可以作为回调函数但是由于静态成员函数中只能调用静态成员变量和静态成员函数这样的结果可能不是我们想要的,所以视情况选择。
以上内容均是作者通过网上资料加上自己总结而来,如有疑问望不吝赐教,谢谢!