我在一个c++的类中一个函数funcA()中
声明了一个指针变量LRESULT* pL(int a, POINT *b),
在该类的一个成员函数中要取指向另一个成员函数funcB(int a, POINT *b),的指针,
付给该指针pL: pL =funcB;
可是总是出错误,通不过编译,请问应该怎样做?
声明了一个指针变量LRESULT* pL(int a, POINT *b),
在该类的一个成员函数中要取指向另一个成员函数funcB(int a, POINT *b),的指针,
付给该指针pL: pL =funcB;
可是总是出错误,通不过编译,请问应该怎样做?
解决方案 »
- Mysql odbc 测试时报“空难性故障”
- GetPixel()问题!
- VC如何实现QQ空间等网页的登陆以及操作
- 请教一个网页中嵌入ActiveX的问题
- 为啥这个钩子函数看不到左击!!
- VK_PAGE_DOWN,这个键我的VC分环境中没有定义,该如何定义?
- 为什么在DLL中,AVICap类的创建窗口capCreateCaptureWindow函数,没有生成句柄,程序是编译OK的,问题在哪?
- delphi和vc安装在一个系统上的问题
- 如何改变文件夹(不是文件)的只读属性?
- ========在dll中如何比较简单的获得调用该dll的exe的窗口句柄??======
- WSASend能一次发完数据吗?
- evc中双击事件无响应
要这样:
LRESULT (*pL)(int a, POINT *b)
{
typedef void (A::*p)(int,point); // 利用typedef重新命名类成员函数指针。
funcA(p);
}
指针是可以指向成员函数的。类名::*pl(int, POINT*) = &类名::funcB;
1. error C2276: '&' : 试图取得虚函数的地止
2. error C2440: 无法从'type cast' : 'long (__thiscall CMyclass::*)(int, POINT*)' 向 'int (__stdcall *)(void)' 变换
error 2 是在以下的调用中出现的LRESULT 类名::*pl(int, POINT*) = &类名::funcB;
DaRegistCustomRubber(sizeof(CST_RB), (PROC)pl);
{
typedef void (A::*p)(int,point);
void function(int,point);
...
void other_func()
{
p pfunc = MyClass::function;
}}调用的时候需要对象指针的,函数指针本身不够。
pL = ClassPTR->funcB;
{
typedef void (CFoo::*PFOO)(int);
PFOO pFoo;
public:
void Foo(int i)
{
pFoo=Func;
(this->*pFoo)(i);
}
void Func(int i){}};20分,少一分不要,多一份不要(=_=)