如何用一个数字乘以一个通过引用传递的函数

How to multiply a number by a function passed by reference

本文关键字:引用 函数 一个 数字 何用一      更新时间:2023-10-16

在我的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++编译器中,我得到一个错误:表达式必须具有算术或枚举类型。我在上面的评论中指出了错误的来源。有人能给我解释一下为什么我有这个错误,我如何解决这个错误?

我认为您正在尝试将f(x)x值从a集成到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)来调用函数指针,并将其相加。

试着用这个代替

 sum = sum + f(.0001);

将函数指针乘以分数就不太好了