我的课程实现如下。在构造函数中,我得到一个编译错误。请你告诉我为什么?
class A{
public:
typedef void (A::*HANDLER)();
void test1(){
printf("This is test 1");
}
void test2(){
printf("This is test 2");
}
A(){
HANDLER h= &A::test1;
h(); // an error spawn here with the description: term does not evaluate to a function taking 0 arguments
}
};
答案 0 :(得分:0)
答案 1 :(得分:0)
g++
错误消息提供了更多信息:
bar.cc: In constructor 'A::A()':
bar.cc:15:11: error: must use '.*' or '->*' to call pointer-to-member function in 'h (...)', e.g. '(... ->* h) (...)'
事实上,如果您将调用更改为(this->*h)();
,它会通过编译器。