我有课
class A{
A(/*constructor arguments*/);
double MethA(double);
};
我想传递方法MethA
在带有指向函数的指针的函数中:
double function(double (*f)(double), double x){
return f(x);
}
所以我要做的就是打电话
A a(/*constructor arguments*/);
function(a.MethA,1.0);
但它无法编译。
我很确定这个问题在其他地方得到了回答,但我找不到在哪里,因为我不确定我使用的术语是否正确。我是否试图将类方法上的指针作为函数参数传递?或者,将函数指针作为类的成员传递...我很困惑:-(
最佳答案
当您需要使用指向成员函数的指针时,您需要传递两个单独的东西:
- 调用什么成员函数
- 在什么实例上调用它。
在 C++ 中,您无法像您希望的那样将它们组合在一个构造中:
A a;
bar(a.foo);
不是有效的 C++。
相反,你必须这样做:
A a;
bar(a, &A::foo)
并相应地声明并实现 bar() :
void bar(A &a, void (A::*method)()) {
a.*method();
}
关于c++ - 将指向类方法的指针作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20745164/