背景
注册回调函数中,回调函数是一个静态函数。需要调用类对象中的一个成员函数进行后续通知逻辑。
方案
- 定义全局指针,用于指向类对象this指针
static void *s_this_obj;
- 类构造函数中,将全局指针指向所需类的this指针
s_this_obj = this;
- 在静态函数中进行调用类的成员函数
//==== 上下文
ClassName *obj;
obj = (ClassName *)s_this_obj;
obj->memer_function(); // 在此处调用类中成员函数。this's ok!
总结
看似小巧,很实用,希望能够帮到大家~