在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])();
根据需要实例。