很多时候,在调用一些系统函数,特别是数据库、异步IO的时候,都需要使用CallBack回调机制,而通常callback函数都需要使静态编译才能通过,而类的实例都是动态生成。如何解决呢?
Class A {
static void callbackStaticEntryPoint(void * pthis);
void realEntryPoint();
}
void A::callbackStaticEntryPoint(void * pThis) {
A *p = (A *)pThis;
p->realEntryPoint();
return 0;
}
这样暴露在外的只有一个callbackStaticEntryPoint的static地址,这样更安全了。
参照:http://blog.youkuaiyun.com/wojiushiwo987/article/details/7720656
回调机制与静态入口
本文介绍了一种在使用回调机制时解决类实例动态生成问题的方法。通过定义一个静态的回调入口函数并将其作为回调函数传递,可以实现实例方法的调用。这种方式既保证了回调函数的静态特性,又维护了类实例的动态生成。
2679

被折叠的 条评论
为什么被折叠?



