所以我在C ++中有一个函数,它接受另一个函数:
double integral(double (*f)(double x){...};
我还有一个具有成员函数f的类:
class Test{
public:
double myfun(double x){...};
};
我希望能够使用类Test的成员函数myfun调用积分函数。有没有办法做到这一点?例如,是否可以执行以下操作:
Test A;
integral(A.myfun);
我甚至想更进一步,在类Test中调用integral,使用自己的成员函数作为输入!
谢谢!
答案 0 :(得分:2)
没有;普通函数指针不能将地址存储到非静态成员函数中。您可以考虑以下两种解决方案。
1)使myfun
静止。然后integral(A::myfun)
应该编译。
2)如果你有C ++ 11支持,请使integral
函数采用一般的函子类型,
template<typename Functor>
double integral(Functor f) { ... };
并绑定Test
的实例以创建仅以double
作为参数的函数对象,
Test A;
integral(std::bind(&Test::myfun, A, std::placeholders::_1));
或简单地传递一个lambda,
Test A;
integral([&A](double x){ return A.myfun(x); });