我试图将一个成员函数传递给libevent,它应被视为回调.
#include <event.h>
class A
{
public:
void eventcb(evutil_socket_t fd, short events, void *ctx) { }
};
static void global_eventcb(evutil_socket_t fd, short events, void *ctx) { }
typedef void (A::*mthd)(evutil_socket_t, short, void*);
int main(void)
{
struct event_base *evbase = event_base_new();
mthd eventcb = &A::eventcb;
A *instance = new A;
(instance->*eventcb)(NULL, 0, NULL);
struct event *timer1 = evtimer_new(evbase, global_eventcb, NULL);
struct event *timer2 = evtimer_new(evbase, (instance->*eventcb), NULL);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我可以在A类中成功创建一个指向eventcb的方法指针,并在A的实例上调用它(第20行).
此外,在第22行传递全局函数(如在C中一样)也可以正常工作.
但是,在第23行,我尝试将我的方法指针传递给libevent,当我编译它时,我得到以下错误(使用 …