c++ - 修改作为输入传递的函数

标签 c++

我将一个函数 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/

相关文章:

c++ - 如何链接 main.cpp、a.h 和 a.cpp?

c++ - 尝试连接两个字符串时出错

C++:仅在一个元素上使用 unique_copy

c++ - CString 值在 64 位转换期间被截断

c++ - 静态成员未更新

c++ - 是否可以使用不带参数的专门化模板?

c++ - 将代码块用于 const unsigned long 时出现 GCC 错误

c++ - 为什么要为每个 .cpp 文件创建 .o 文件

c++ - 打印错误信息

c++ - 如何从整个磁盘中排除要挂载的一个文件