如何将数字乘以引用传递的函数

时间:2013-03-10 19:40:50

标签: c++ function parameters typedef

我的main方法和其他所有函数上面都有以下代码:

typedef double (*FUNC)(double);

double integrate(FUNC f, double a, double b){
double sum = 0;
for(int i=a; i<=b; i++){
    sum = sum + (f * .0001); //error occurs here, red squiggly line under "f"
}
    return sum;
}

在Microsoft Visual Studio C ++编译器中,我收到错误:Expression必须具有算术或枚举类型。我在评论中指出错误来自上方。有人可以向我解释为什么我有这个错误以及如何解决这个错误?

2 个答案:

答案 0 :(得分:3)

我认为您试图将f(x)的值xa整合到b

在这种情况下,您的代码非常不正确。

你的0.0001似乎表明你实际上是在尝试使用10000步,在这种情况下你会使用以下内容:

const int steps = 10000;
double x = a;
double delta = (b - a) / steps;
for(int i = 0; i < steps; i++, x += delta)

然后,您将计算使用调用f(x)来调用函数指针,并将其求和。

答案 1 :(得分:2)

尝试使用此代替

 sum = sum + f(.0001);

将函数指针乘以分数不会很好。