这是找到返回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 ) ;
}
答案 0 :(得分:3)
要将函数指针作为函数参数传递,只需将其命名为用作函数参数的任何其他变量:
bisection(start,end,tol,f);
请注意,您的参数类型是指向返回引用的函数的指针,而不是对函数的引用。我猜你真的想要一个指向函数的指针,该函数按值返回double
;如果是这样,那么将其改为
double (*f)(double)
或只是
double f(double)
,作为函数参数,将被解释为函数指针类型。