c ++将可变数量的参数传递给函数

c++ passing variable number of arguments to a function

我有一些函数接受不同数量的参数(一个或多个双精度值)。指向这些函数的指针存储在公式解释器中的向量中,并将在需要时用于在运行时调用函数。要调用的函数和要传递的参数数量取决于公式本身,并且只有在运行时才知道。

通过解释公式,我得到一个指向要调用的函数的迭代器和一个带有要传递的参数的 vector<double>。在当前版本中,我解决了通过代码复制传递可变数量参数的需求,例如:

// (the number of args in dblVec to match the number of args the function accepts is checked previously)
if (dblVec.size() == 1) result = (*funcIter)->function(dblVec.at(0)); 
else if (dblVec.size() == 2) result = (*funcIter)->function(dblVec.at(0), dblVec.at(1)); 
else if (dblVec.size() == 3) result = (*funcIter)->function(dblVec.at(0), dblVec.at(1), dblVec.at(2)); 
...

这不是很优雅并且有限制,但如果参数的数量不大于上述测试的数量,它就可以工作。我的问题是:

有什么方法可以在参数列表中有一个 "implicit" 循环来调用一个函数,比如(伪代码)

result = (*funcIter)->function(passVectorContentsAsMultipleSeparatedDoubles(dblVec));

传递整个向量不是解决方案,因为函数也是 "standard" 函数(如 sin(double)cos(double)atan2(double, double) 等)作为用户(使用解释 class 的程序员)传递给解释 class 的自定义函数。

提前感谢您的任何提示。

使用 C++11 这实际上是可能的,我遇到了一个非常相似的问题。看看以下内容:

Generic template for calling function with vector elements