C++ pointer to member function getting an error : not a function or function pointer

C++ pointer to member function getting an error : not a function or function pointer

这是我的资料:

一个class PostfixCalculator,具有public个成员方法:

class PostfixCalculator
{

public:
    PostfixCalculator();

    int  top();
    int  popTop();
    void pushNum(int);
    void add();
    void minus();
    void multiply();
    void divide();
    void negate();
    bool empty();
    void pushSymbol(string);

当我尝试通过指向成员函数的指针调用成员函数时,我尝试了类似下面的方法(我知道该方法没有多大意义,它只是一个测试):

void PostfixCalculator::pushSymbol(string str)
{
    func f = &PostfixCalculator::add;
    this.*(f)();
}

但是,我收到以下编译器错误:

> postfixCalculator.cpp:84:12: error: called object type 'func' (aka
> 'void (PostfixCalculator::*)()') is not a function or function pointer
>                 this.*(f)();
>                       ~~~^ 1 error generated.

我在 fedora linux.

下使用 clang++ 编译我的程序

this 是一个指针,所以你应该使用 -> 并且 deref * 比函数调用 () 的优先级低,所以你应该使用 (this->*f)()

首先,this是一个指针,这意味着你必须对它应用->*,而不是.*。如果你想使用 .*,你必须先用 * 取消引用 this

其次,函数调用运算符()的优先级高于.*->*运算符,这意味着你需要额外的括号来确保指针f是首先解除引用,函数调用 () 应用于该解除引用的结果。

应该是

(this->*f)();

或者

(*this.*f)();