【发布时间】:2016-12-07 18:34:23
【问题描述】:
在 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”是您定义和声明函数指针数组的方式。我遇到fpointers[a]();行有问题我收到此错误:
明显调用括号前的表达式必须有 (pointer-to-) 函数类型
我做错了什么?
【问题讨论】:
-
@user4581301 是的,会修复它。谢谢。
-
离题:Take a look at
std::function. 更多的运行时开销,但清理了一些方法指针语法的混乱。 lambda expressions 和std::bind特别有趣。 -
@user4581301 谢谢,会的:-)
标签: c++ arrays visual-studio pointers