【发布时间】:2019-11-26 22:10:04
【问题描述】:
我有方法(void DE(...),它根据一些数据点找到函数y=f(x, a, b...) 的参数。当我想使用具有其他数量参数的函数时,我需要注释第一个函数,编写第二个函数,添加(X.PAR[i][1],..., X.PAR[i][n]) 每次我使用func(y, x, param_1....param_n) 时这个函数的参数。我怎样才能让函数f(double x1, x2,...xn) 成为函数DE 的参数,所以我不需要为每个其他函数更改我的程序?
double f(double x1, x2,...xn){
}
void DE(int n){
double A[n];
fill(A) //some function that makes up values
cout<<f(A[0], A[1],...A[n-1]);//if I change number of arguments in f, I also need to change it here
}
【问题讨论】:
-
那些
#defines 会给你带来麻烦。它们是简单的文本替换宏,如果进行替换是否有意义,它们不会给出。如果您要使用宏,请使用易于区分且难以意外重用的标识符。 -
除了可变参数,看看variadic templates。尽管在这种情况下,您似乎想传入 ` std::vector` 的值。
-
替换了那些“定义”
-
鉴于这个问题,这似乎是很多代码。您能否精简代码以帮助人们专注于与您的问题相关的内容? (请记住,您的示例代码不必计算任何对您的实际项目有用的东西;它只需要演示编码问题。虚拟占位符函数可能是个好主意。)