如何取带作用域的函数地址 5C

我写的一个C++的MFC程序,如下图:PageEndProc这个函数会作为一个回调函数传入funcAplIFEntryEventFunc这个函数,我再头文件里声明了一个事件PostScanEveryPage,需要在回调时触发这个事件。但是因为PageEndProc这个没加作用域限制符CPnScanOCXCtrl::导致调用PostScanEveryPage会提示为定义标识符;如果加上这个标识符,在传入funcAplIFEntryEventFunc会提示转换无效。不知道怎么做才是对的。
图片说明
// For Tool Kit
long _stdcall PageEndProc(SCAN_PAGEINFO* pPage)
{
//char str[260];
//memset(&str, 0x00, sizeof(str));
//long err = 0;
//if(funcAplIFGetOrgFileName){
// funcAplIFGetOrgFileName(str, &err);
//}

gPageCnt++;
PostScanEveryPage(gPageCnt);
return 0;

}

LONG CPnScanOCXCtrl::Scan(LONG nXferCount, LONG bAsync)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

// TODO: 在此添加调度处理程序代码

long sts;
long errNo;

if (!funcAplIFEntryEventFunc) {
    return 0;
}
if (!funcAplIFScanExec) {
    return 0;
}
// set event function
sts = funcAplIFEntryEventFunc((long)PageEndProc, NULL, &errNo);

图片说明

2个回答

你这个不是函数作用域,而是成员函数。
成员函数的函数原型末尾有一个CPnScanOCXCtrl * this的隐含参数。加上去就匹配了。

liuyan5462010
liuyan5462010 您还有时间帮忙看一下吗?这个问题已经困扰我一整天了
一年多之前 回复
qq_41647063
qq_41647063 你这个不是函数作用域,而是成员函数。 成员函数的函数原型末尾有一个CPnScanOCXCtrl * this的隐含参数。加上去就匹配了。
一年多之前 回复
liuyan5462010
liuyan5462010 回复caozhy: 我就这一个账号,那会回复的那个账号不知道是谁,我把代码复制上了,麻烦您给看一下
一年多之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 还有编译器给你的错误提示
一年多之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复liuyan5462010: 把你完整代码贴出来看。
一年多之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复qq_34289547: 你是谁?你有两个账户?
一年多之前 回复
liuyan5462010
liuyan5462010 回复caozhy: long _stdcall PageEndProc(SCAN_PAGEINFO* pPage, CPnScanOCXCtrl * this),您说的是这样吗?还是提示报错啊
一年多之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复liuyan5462010: 最后一个参数,函数原型
一年多之前 回复
qq_34289547
qq_34289547 还是不匹配呀
一年多之前 回复
liuyan5462010
liuyan5462010 不好意思我不是太明白,您说的CPnScanOCXCtrl * this这个应该加载什么位置?
一年多之前 回复
liuyan5462010
liuyan5462010 不好意思没看明白&运算符怎么用于函数的,我试了几下都没成功
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!