首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问回调函数定义的基本有关问题

2012-04-01 
问回调函数定义的基本问题下面是一个成员函数中的几行代码:CTcpDrv*pNewnewCTcpDrv(hDrvObject,pRemoteAd

问回调函数定义的基本问题
下面是一个成员函数中的几行代码:
        CTcpDrv*   pNew   =   new   CTcpDrv(hDrvObject,   pRemoteAddr,   port,   bAuto,   dwTime,   StOnRead,   StOnError,   StOnConnect,   this);
       
        if   (!pNew)
        {
                ASSERT(0);
                return   NULL;
        }

在该成员函数所在类头文件中的构造函数定义有:
        CTcpDrv(
                HANDLE   hDrvObject,                                     //   DRVOBJECT句柄
                LPCTSTR   pAddr,                                             //   地址字符串指针
                WORD   wPort,                                                   //   对端端口号
                BOOL   bAuto,                                                   //   是否自动连接
                DWORD   dwTime,                                               //   重连时间
                LPONREAD   pOnRead,                                       //   读回调函数指针
                LPONERROR   pOnError,                                   //   出错回调函数指针
                LPONCONNECT   pOnConnect,                           //   连接回调函数指针
                HANDLE   hUser                                                 //   回调注册句柄
                );

----
从构造函数定义,CTcpDrv(hDrvObject,   pRemoteAddr,   port,   bAuto,   dwTime,   StOnRead,   StOnError,   StOnConnect,   this)中的StOnConnect函数为回调函数;这个(回调函数)一般怎么(哪里)定义的?



[解决办法]
哪里?在源代码中搜一下就是了。
[解决办法]
从这个类的设计者的角度来看:
1.类的设计者提供回调函数的原型;
2.类的使用者根据回调函数的原型,来实现自定义的回调函数。

[解决办法]
搜索当前工程 ~
[解决办法]
这个(回调函数)一般怎么(哪里)定义的?
====================


呵呵, 这个没有严格的限制 ~
[解决办法]
回调只是一种解决问题的方法而已。
当然是注册到了某一个地方。不过,具体是哪儿,那倒不一定,那要看CTcpDrv这个函数编写者的意愿了,可能是在某个全局变量中,某个局部静态变量中,某个对象中……都有可能。
总之,它好不容易从你这儿要了个函数指针,是肯定不会让他丢掉的,你就放心好了。:)

热点排行