【发布时间】:2013-06-28 02:56:15
【问题描述】:
我正在尝试在 c++ 中创建指向另一个函数的函数指针。
这是我目前所拥有的:
LONG (*function)(LPSTR,LPVIPERVAR4,LONG)=&CWilExtender::DllVarHandler;
当我尝试编译我的程序时,我得到了这个错误:
.\MyExtender.cpp(132) : error C2440: 'initializing' : cannot convert from
'LONG (__thiscall CWilExtender::* )(LPSTR,LPVIPERVAR4,LONG)' to
'LONG (__cdecl *)(LPSTR,LPVIPERVAR4,LONG)'
There is no context in which this conversion is possible
不知道DllVarHandler是怎么定义的,也不知道怎么复现函数指针的类型。
如何更改(_cdecl *) 以匹配(__thisscall CWilExtender::*)?
具体来说,LONG (__thiscall CWilExtender::* )(LPSTR,LPVIPERVAR4,LONG) 是什么意思,如何将其写为函数指针的类型?
谢谢。
【问题讨论】:
-
c++ Function member pointer 的可能重复项
-
该错误消息告诉您它所期望的类型。
-
在 C++ 中,您可以使用虚方法,因此编写的代码既易于阅读又可以避免这个问题。改为使用和接口。
-
如果您没有好的 C++ 参考资料,那么您将很难掌握其中的窍门。如果不小心,即使是经验丰富的程序员也会犯这种错误。
-
@OliCharlesworth 是正确的,您试图表达一个与函数指针不同的成员函数指针。阅读 Oli 链接到的文章。