私はクラスメンバーを持っています:
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);
ポイントは、メソッドのシグネチャを変更できないことです。この問題を別の方法で解決する必要があります。