如何将函数传递给另一个函数。提示和指示?

时间:2015-03-06 01:00:49

标签: c++ pointers

这是找到返回double的任何函数的根的代码。我无法找到错误,它一直表示希望"在双重'之前的主要表达。 double是我传递给函数的函数前面的double。这是我第一次尝试将函数传递给函数,所以我确定这就是我收到错误的原因

 #include <cmath>
 #include <iostream>

double bisection(double start, double end, double tol, double &(f)(double x) ){


double x = end - start;
double num = f(x);
if( num < tol){
    return x;
}

if( num == 0){
    return x;
}

if( num < 0){
    start = num;
    bisection(start,end,tol, double &(f)(double x) );
}
else if(num > 0){
    end = num;
    bisection(start,end,tol, double &(f)(double x) );
    }
}

double fn(double x){
    return (  (1/sqrt(400 - x*x)) + (1/sqrt(900 - x*x))  - 0.1 )  ;
}

1 个答案:

答案 0 :(得分:3)

要将函数指针作为函数参数传递,只需将其命名为用作函数参数的任何其他变量:

bisection(start,end,tol,f);

请注意,您的参数类型是指向返回引用的函数的指针,而不是对函数的引用。我猜你真的想要一个指向函数的指针,该函数按值返回double;如果是这样,那么将其改为

double (*f)(double)

或只是

double f(double)

,作为函数参数,将被解释为函数指针类型。