void wczytaj(N nazwa, O x1, ...) {
va_list arg;
O x;
...
va_start (arg, x1);
for (x = x1; x; x = va_arg(arg, O)) {
w.punkt.push_back(x);
cout << "DODANO " << x << endl;
}
va_end (arg);
...
我正在使用它
s.wczytaj(n, x1, x2, x3);
其中n是“asd”,x1 = 1,x2 = 2,x3 = 3;
在输出上我可以看到
DODANO 1
DODANO 2
DODANO 3
DODANO 1081714496
答案 0 :(得分:2)
变量函数参数不类型安全,或者任何类型的“安全”。 你的责任是向你的函数传达有多少参数以及它们的类型。
在您的代码中,唯一使循环终止的是x
计算为false时。您的数据模糊不清,似乎由整数值组成,这就要求您的最后一个变量参数为零,这不是您的示例。
尝试使用(n, x1, x2, x3, 0)
调用该函数。
答案 1 :(得分:1)
#include <stdarg.h>
#include <iostream>
void zytaj(int n, ...) {
int i;
va_list arg;
va_start (arg, n);
for (i = 0; i < n; i++) {
int val = va_arg(arg, int);
std::cout << val << std::endl;
}
va_end (arg);
}
int main()
{
zytaj(3, 4, 1, 7);
return 0;
}