在A.h中:

class A
{
    typedef void (A::*fp)();
    void test1();
    void test2();
    A(int a);
}


在A.cpp中,我有:

A::A(int a)
{
    fp fpointers[] = {&A::test1,&A::test2};

    fpointers[a]();
}
void A::test1()
{
//do something
}
void A::test2()
{
//do something
}


这是我所拥有的简化版本。但是问题仍然有效。根据我的拙劣经验,“指针”是如何定义和声明函数指针数组的方式。我在行fpointers[a]();时遇到问题,出现此错误:


  显式调用括号前的表达式必须具有
  (指向)功能类型


我究竟做错了什么?

最佳答案

语法将是

(this->*fpointers[a])();


根据需要实例。

10-05 20:34
查看更多