我将一个函数 f 传递给另一个函数 SInf,但是我在 SInf 中调用 f 的 20 多次,我调用了 f(1./x)/(x*x)
。
有没有办法实现另一个函数,比如 g(x)=f(1./x)/(x*x)
?虽然我认为没有必要完成我需要做的事情,但它会显着提高代码的可读性。
我宁愿没有 SInf 外部的类或结构,因为我希望它能够替换类似的功能。
double SInf(double (*f)(double), int N, double aa, double bb, bool closed=true)
{
struct functions{
double fi(double x){return f(1./x)/(x*x);}
};
//bla bla lots of code
}
给我
error: use of parameter from containing function
最佳答案
您可以使用 std::function
和 lambda 函数轻松完成此类操作。否则会很困难,因为您将无法传递额外的参数。
如果您正在编写一个简单的单线程应用程序,您仍然可以使用常规函数指针并通过全局变量传递额外的状态,但是当程序变得复杂时,这会很快崩溃。
关于c++ - 修改作为输入传递的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20341567/