小编Ale*_*son的帖子

使用libevent回调成员函数

我试图将一个成员函数传递给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,当我编译它时,我得到以下错误(使用 …

c++ member-function-pointers libevent

2
推荐指数
1
解决办法
4629
查看次数

标签 统计

c++ ×1

libevent ×1

member-function-pointers ×1