如何在不更改签名的情况下运行Solver?

时间:2015-02-15 03:08:34

标签: c++

好吧,我是noob学习,所以请原谅我的方式(如果有的话)的简单性(愚蠢)。我有一个解决方法功能,我不想改变格式

double Solver( double (*FN)(double) )
{
    //return some_solution // based on iterations it does on FN(root finder)
}

Fn看起来像这样

double FN(double param1)
{
    double param2;
    //..
    double paramn;

    return some_solution
}

困境在于我想使用Solver为param2的不同组合(比如不同值的数组)查找值。 如何在不改变Solver签名的情况下做到这一点? 在此先感谢您的帮助。 和平!

1 个答案:

答案 0 :(得分:0)

所以我找到了一种方法来做到这一点。我们的想法是你可以从函数中取出参数并定义一个指向该参数的指针。

double param2;
double *pparam2 = param2;
double FN(double param1)
{

    //..
    double paramn;

    return some_solution
}

然后在使用求解器时使用for循环每次都可以通过指针更新param2的值

for(int i =0; i<10; i++){
*pparm2= 55+i; //say
 //and here you can use the solver without changing anything and do what //u want.
}

不是很优雅,但它有效,还有更好的方法吗?