我个人用的是 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)')。

请高手帮下忙,说明一下为什么。