Такой код:
void main() {
line *$1 = NULL,
*$2 = NULL,
*$3 = NULL;
line *p = $1;
_debug(p);
r->setRside(p, $2, $3);
}
// функция отладки чтобы глядеть значение переданного аргумента
void _debug(line* papa) {
int i = 0;
return;
}
//(А) Кусок кода в котором использую передачу аргументов неопределенного числа
void Rule::setRside (...) {
rside = new RightSide;
va_list symbols;
va_start (symbols, lengthRule);
rside->setAlltable(symbols, lengthRule);
va_end(symbols);
}
//(Б)продолжение
void RightSide::setAlltable (va_list args, int numArgs) {
alltable = new line* [numArgs];
for (int i = 0; i < numArgs; i++)
alltable[i] = va_arg(args, line*);
}
В дебаге (_debug(p)) проверяю значение - все верно. Как только передаю в кусок кода "А" аргументы, то значение первого и остальных аргументов превращаются в грязь типа 0xFFFFFFF. Не понимаю где они могут меняться.