我想通过成员函数指针调用成员函数。调用函数也是成员。
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);发布于 2013-04-29 10:30:20
(this->*f1)() + (this->*f2)();无论是否从类中调用它,都必须显式指定要调用的对象(在本例中为this)。还请注意所需的括号。以下是错误的:
this->*f1() + this->*f2()发布于 2013-04-29 10:29:46
如下所示:
(this->*f1)() + (this->*f2)()发布于 2013-04-29 10:34:40
虽然您没有显示它,但是在调用Z时很可能也会出现错误。
您需要像这样调用这个函数:
Z(&A::P, &A::Q)https://stackoverflow.com/questions/16276373
复制相似问题