可能重复:
C++ member-function pointer
How to invoke pointer to member function when it's a class data member?
我最近才开始使用C ++,所以如果以下内容包含任何琐碎的错误,或者我错过了一个更简单的解决方案,我深表歉意。我想实现这样的目标:
class ClassA {
typedef double (ClassA::*CondFunc)();
public:
ClassA(int x, int y) {
value_ = x;
switch (y) {
case 0:
condFunc_ = &ClassA::condA;
break;
case 1:
condFunc_ = &ClassA::condB;
default:
break;
}
}
~ClassA();
int value_;
CondFunc condFunc_;
double condA() { return 2.0*value_; }
double condB() { return 4.0*value_; }
void Test() {
int a = condFunc_(); // compile error
}
};
但在Test()中遇到编译错误。请注意,这是一个非常简化的功能,并没有任何意义。我已经在这个论坛和其他地方搜索了答案,但我仍然不确定是否可以定义/调用这样的非静态成员函数指针。我遇到的唯一合理的提示/解决方案采用静态包装函数来实现类似的功能。我很感激任何帮助/澄清。
答案 0 :(得分:4)
你必须像这样调用成员指针函数:
int a = (this->*condFunc_)();