大家帮我看看这个回调函数,该怎么写

fjlangzi 2009-10-16 04:15:57
typedef void (*snmp_callback)( int, // reason

Snmp*, // session handle

Pdu &, // Pdu passed in

SnmpTarget &, // source target

void * ); // callback data



int get( Pdu &pdu, SnmpTarget &target,

snmp_callback callback,

void * callback_data=0);

看get的第三个参数,我该怎么定义啊,我这样写不对。
snmp_callback test_callback( int, // reason
Snmp*, // session handle
Pdu &, // Pdu passed in
SnmpTarget &, // source target
void * ) // callback data
{
return NULL;
//return 0;//这也不对
}




我是这么调用的 snmp.get(pdu,*target,test_callback,0);

错误提示:
error C2664: 'int __thiscall Snmp::get(class Pdu &,const class SnmpTarget &,void (__cdecl *const )(int,class Snmp *,class Pdu &,class SnmpTarget &,void *),const void *)' : cannot convert parameter
3 from 'void (__cdecl *(int,class Snmp *,class Pdu &,class SnmpTarget &,void *))(int,class Snmp *,class Pdu &,class SnmpTarget &,void *)' to 'void (__cdecl *const )(int,class Snmp *,class Pdu &,class SnmpTarget &,void *)' None of the functions with this name in scope match the target type



各位告诉我该怎么写啊 ,谢谢。
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dukelee 2009-10-16
  • 打赏
  • 举报
回复
snmp_callback是一个类型,你这样写
snmp_callback test_callback( int, // reason
Snmp*, // session handle
Pdu &, // Pdu passed in
SnmpTarget &, // source target
void * ) // callback data
{
return NULL;
//return 0;//这也不对
}
是定义了一个函数,名字是test_callback,返回类型是snmp_callback
你的意思应该是定义一个函数
void test_callback( int, // reason
Snmp*, // session handle
Pdu &, // Pdu passed in
SnmpTarget &, // source target
void * ) // callback data
{
} 这个函数是snmp_callback类型的,然后把它传给需要这种类型参数的函数
snmp.get(pdu,*target,test_callback,0);
fjlangzi 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 binghuazh 的回复:]
void test_callback( int,                  // reason
            Snmp*,                // session handle
            Pdu &,                // Pdu passed in
            SnmpTarget &,  // source target
            void * ); 

{
  //dosth();
}


snmp.get(pdu,*target,test_callback,0);
[/Quote]

谢谢哦,正确。
fishion 2009-10-16
  • 打赏
  • 举报
回复
snmp_callback test_callback( int, // reason
Snmp*, // session handle
Pdu &, // Pdu passed in
SnmpTarget &, // source target
void * ) // callback data
{
return NULL;
//return 0;//这要返回snmp_callback结构的值
blingpro 2009-10-16
  • 打赏
  • 举报
回复
void test_callback( int, // reason
Snmp*, // session handle
Pdu &, // Pdu passed in
SnmpTarget &, // source target
void * );

{
//dosth();
}


snmp.get(pdu,*target,test_callback,0);
  • 打赏
  • 举报
回复
fishion 2009-10-16
  • 打赏
  • 举报
回复
错了,试下
snmp.get(pdu,*target,(snmp_callback)test_callback,0);
fishion 2009-10-16
  • 打赏
  • 举报
回复
typedef snmp_callback (*snmp_callback)( int, // reason

Snmp*, // session handle

Pdu &, // Pdu passed in

SnmpTarget &, // source target

void * ); // callback data
fjlangzi 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fishion 的回复:]
int get( Pdu &pdu,  SnmpTarget &target,

                void* callback,       

                void * callback_data=0); 

[/Quote]
这个是别人定义好的 不能变
只能自己定义符合要求的回调函数
fishion 2009-10-16
  • 打赏
  • 举报
回复
int get( Pdu &pdu, SnmpTarget &target,

void* callback,

void * callback_data=0);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧