类成员函数转换成void (*)和静态成员函数获取非静态成员变量的方法

很多第三方函数需要把函数转换成void(*)类型,如libevent 1.4版本中的event_set函数:
类成员函数转换成void (*)和静态成员函数获取非静态成员变量的方法
如果要传递类成员函数给相应的函数我们应该怎样处理呢?
仅仅传递类成员函数可以吗?
不可以的!编译的时候会遇到下面的错误:
cannot convert DataWatcher::HandlerFn from type void (DataWatcher::)(int, short int, void*) to type  void (*)(int, short int, void*)
那我们应该怎样解决类似的问题呢?
方法就是声明该函数为静态成员函数。静态成员函数就像普通函数一样。
如果获取成员函数的指针,你需要类的实例化获取!相关内容也可以阅读下面的资料。
http://tipsandtricks.runicsoft.com/Cpp/MemberFunctionPointers.html


另外,在静态成员函数中怎样使用非静态的成员变量呢?

方法:类的指针作为静态成员函数的参数即可解决问题,如下图中的静态成员函数HandlerFn获取非静态成员函数GetBuilderClient():

类成员函数转换成void (*)和静态成员函数获取非静态成员变量的方法