【发布时间】:2012-06-14 09:44:58
【问题描述】:
我有班级成员:
LineND::LineND(double a ...)
{
coefficients.push_back(a);
va_list arguments;
va_start(arguments, a);
double argValue;
do
{
argValue = va_arg(arguments, double);
coefficients.push_back(argValue);
}while(argValue != NULL); // THIS IS A PROBLEM POINT!
va_end(arguments);
}
我不知道将使用多少个参数。我需要将每个参数放入名为coefficients 的向量中。我该怎么做?我了解,在这种情况下,声明 while(argValue != NULL) 是不正确的。例如,我不能使用这个签名:
LineND::LineND(int numArgs, double a ...)
像这样改变条件:
while(argValue != numArgs);
关键是我无法更改方法的签名。需要用另一种方式解决这个问题。
【问题讨论】:
-
好的,所以你不能改变函数的签名。您至少可以添加到类和函数体中吗?
标签: c++ argument-passing variadic-functions