下面的示例使用指向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;
}