В приведенном ниже примере используется указатель на функцию-член класса 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;
}