c++中声明回调函数

来源:互联网 发布:php while sleep 编辑:程序博客网 时间:2024/05/14 13:42
在利用snmp++开发网络管理软件时,需要异步发送请求报文,在函数中需要注册回调函数,具体为:typedef void(* snmp_callback)(int reason, Snmp *session, Pdu &pdu, SnmpTarget &target, void *data),开始把回调函数声明为private成员,形式为:void getCallback(int reason, Snmp *session, Pdu &pdu, SnmpTarget &target, void *data);但是编译时一直保存,提示unresolved overloaded function type错误。:<,仔细核对了函数的返回值和参数后并没有发现问题,一直困扰了很久,后来发现在c++中回调函数不能声明为类的非静态成员,因为非静态成员函数在编译时会在参数中加入this指针,这样参数列表就发生了变化,所以应该声明为全局函数或者类的静态函数