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
最佳答案
可变参数函数参数不类型安全,或者任何类型的“安全”。 您有责任向您的函数传达有多少参数以及它们的类型。
在您的代码中,唯一使循环终止的是当 x
计算结果为 false 时。您的数据的类型模糊,似乎由整数值组成,这将需要您的最后一个可变参数为零,而您的示例中并不存在这一点。
尝试使用 (n, x1, x2, x3, 0)
调用该函数。
关于c++ - stdarg.h 读取太多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9774803/