C ++使用它的函数指针调用成员函数的语法

时间:2012-02-27 06:50:59

标签: c++ function-pointers

下面的示例使用指向Blah类的成员函数的函数指针。函数指针的语法对我来说很清楚。但是在打电话时我必须在this->*funcPtr附近放置括号,我不确定为什么这是必需的。我想这与C ++如何评估表达式有关。使用的编译器是VS 2008。

#include <iostream>

using namespace std;

struct Blah {

    void myMethod(int i, int k) {
        cout << "Hi from myMethod. Arguments: " << i << " " << k << endl;
    }

    typedef void (Blah::*blahFuncPtr)(int, int);

    void travelSomething(blahFuncPtr funcPtr) {
        (this->*funcPtr)(1, 2);
        // w/o the brackets I get C2064 in VS 2008
        // this->*funcPtr(1, 2);
    }
};

int main() {
    Blah blah;
    blah.travelSomething(&Blah::myMethod);
    cin.get();
    return 0;
}

1 个答案:

答案 0 :(得分:2)

函数调用运算符()的优先级高于“指向成员的运算符”->*

例如,请参阅here