主题:在VC中使用函数指针数组时,遇上问题了。
我个人用的是 VC6。
背景是:
Class CMyDlg : public CDialog {
public:
//我在 CMyDlg 类中定义了函数指针类型:
typedef void (CMyDlg:: * VFN)(void);
//然后,我用 VFN 类型定义了一个数组:
VFN lpfnFuncArray[2][19]; //是一个二维数组。
virtual BOOL OnInitDialog();
//
void _RunFn_0_0(){}
void _RunFn_0_1(){}
void _RunFn_0_2(){}
void _RunFn_0_3(){}
void _RunFn_0_4(){}
void _RunFn_0_5(){}
void _RunFn_0_6(){}
void _RunFn_0_7(){}
void _RunFn_0_8(){}
void _RunFn_0_9(){}
void _RunFn_0_10(){}
//
}
//然后,在 OnInitDialog 中写入了 lpfnFuncArray 数组的初始化代码:
BOOL CMyDlg::OnInitDialog(){
lpfnFuncArray[0][0]=void _RunFn_0_0;
..
}
那么,问题来了:
我通过:
//Need use lpfnFuncArray;
VFN fp=lpfnFuncArray[0][0];
fp(); //就在这里出问题了。编译器说 fp 所说明的并不是函数(error C2064: term does not evaluate to a function)
(*fp)(); //最先我是这样用的,可是这样的话,编译器就给出了两个错误:比前面多了一个(error C2171: '*' : illegal on operands of type 'void (__thiscall CMyDlg::*)(void)')。
请高手帮下忙,说明一下为什么。
背景是:
Class CMyDlg : public CDialog {
public:
//我在 CMyDlg 类中定义了函数指针类型:
typedef void (CMyDlg:: * VFN)(void);
//然后,我用 VFN 类型定义了一个数组:
VFN lpfnFuncArray[2][19]; //是一个二维数组。
virtual BOOL OnInitDialog();
//
void _RunFn_0_0(){}
void _RunFn_0_1(){}
void _RunFn_0_2(){}
void _RunFn_0_3(){}
void _RunFn_0_4(){}
void _RunFn_0_5(){}
void _RunFn_0_6(){}
void _RunFn_0_7(){}
void _RunFn_0_8(){}
void _RunFn_0_9(){}
void _RunFn_0_10(){}
//
}
//然后,在 OnInitDialog 中写入了 lpfnFuncArray 数组的初始化代码:
BOOL CMyDlg::OnInitDialog(){
lpfnFuncArray[0][0]=void _RunFn_0_0;
..
}
那么,问题来了:
我通过:
//Need use lpfnFuncArray;
VFN fp=lpfnFuncArray[0][0];
fp(); //就在这里出问题了。编译器说 fp 所说明的并不是函数(error C2064: term does not evaluate to a function)
(*fp)(); //最先我是这样用的,可是这样的话,编译器就给出了两个错误:比前面多了一个(error C2171: '*' : illegal on operands of type 'void (__thiscall CMyDlg::*)(void)')。
请高手帮下忙,说明一下为什么。