会员的功能指针错误

时间:2011-11-22 04:33:23

标签: c++ function-pointers

我的课程实现如下。在构造函数中,我得到一个编译错误。请你告诉我为什么?

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
    }
};

2 个答案:

答案 0 :(得分:0)

您应该以这种方式使用指向成员运算符->*的指针:

(this->*h)(); 
代码示例的

Online Demo

答案 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)();,它会通过编译器。