【发布时间】:2016-01-21 02:25:27
【问题描述】:
我需要在 C++ 中调用一个库函数,它的形式为:
double brents_fun(std::function <double(double)> f);
我可以通过以下方式调用这个函数:
double fun1(double x)
{
return -2.0*x+1;
}
void main()
{
brents_fun(fun1);
return 0;
}
我想将另一个函数传递给brents_fun,例如:
double fun2(double x, double y)
{
return -2.0*x+y;
}
void main()
{
y=12.0;
brents_fun( fun2(x,y=12) );
return 0;
}
在我的真实代码中,y 很复杂。我需要从文件中读取数据,对数据进行一些计算以生成 y。这就是为什么我在 fun2 中需要两个参数 x 和 y。 y 在调用 brents_fun 期间不会更改。
由于 y 没有改变,有没有办法将 fun2 传递给 brents_fun?
谢谢。
豪
【问题讨论】:
-
所有的粗体和双倍行距是怎么回事?粘贴正确缩进的代码,标记它,然后使用 Ctl-k 将其格式化为代码。
-
帮助阅读:isocpp.org/wiki/faq/pointers-to-members 主要是关于指向类成员的指针,但也涵盖标准函数案例并提供 C++ 友好的替代方案。
-
感谢您的所有帮助。我为糟糕的格式道歉。
标签: c++ c++11 functional-programming