我想通過成員函數指針調用成員函數。調用函數也是一個成員。如何通過成員函數指針調用成員函數?
class A;
typedef int (A::*memFun)();
class A
{
int P(){return 1;}
int Q(){return 2;}
int R(){return 3;}
int Z(memFun f1, memFun f2)
{
return f1() + f2(); //HERE
}
public:
int run();
};
int A::run()
{
return Z(P, Q);
}
int main()
{
A a;
cout << a.run() << endl;
}
我沒有做正確,和我越來越無差錯
main.cpp:15:19: error: must use '.*' or '->*' to call pointer-to-member function in 'f1 (...)', e.g. '(... ->* f1) (...)'
return f1() + f2(); //HERE
請出示正確的方式去做。
編輯 - 還有另外一個錯誤,這是其具有
return Z(&A::P, &A::Q);
+1謝謝,這是有效的。在看到編譯器錯誤之後,我確實嘗試了'this - > * f1()+ this - > * f2()',但是它沒有工作。 – 2013-04-29 10:43:58