【发布时间】:2016-03-06 20:17:02
【问题描述】:
这是一个非常基本的问题,我确信之前已经回答过了,但我不知道要搜索什么。
表示我有一个集成数学函数的函数:
double integrator(double (*func_to_integrate)(double,double));
但我要集成的函数属于允许我操作两个以上参数的类型,例如:
double func_to_integrate(double mu, double w0, double x, double y);
这样我就可以遍历 mu 和 w0 的不同值并比较积分结果。 如何将 func_to_integrate 之类的函数传递给积分器?
问候
编辑:正如 alain 在 cmets 中指出的那样,这部分是重复的:How can currying be done in C++?
是否有一个优雅的解决方案对函数指针进行柯里化操作?
【问题讨论】:
-
integrator调用func_to_integrate时,mu和w0的值应该是多少?您可能想查看lambda functions 或std::bind -
它们应该是一些我可以在循环中操作的双打。我尝试了 lambda 函数并绑定。对于这两种情况,我都无法创建集成商可以接受的对象。
-
为什么你的函数和积分器不返回
double? -
你是对的,对不起。
-
您必须更改
integrator的签名。使用它当前的签名,你唯一能做的就是使mu和w0成为全局变量,而不是额外的参数。
标签: c++ function c++11 currying reduction