Подскажите как из функции с переменным количеством параметров вызвать другую функцию с переменным количеством паараметров. А в идеале разные функции с различными параметрами.
Как пример
// это типа функтора. принимает один произвольный аргумент и далее сколько хочет пользователь
// разных аргументов
typedef void (*fn1) (int val, ...);
// здесь некий код который использует произвольный функтор
// необходимые функтору параметры тоже здесь
void perfOp(int* val, fn1 f, ...)
{
va_list args;
if (f)
{
va_start(args, f);
// здесь фукктор вызывается с параметрами, но это не работает
f(val, args);
va_end(args);
}
}
void someOp(int* val, ...)
{
va_list args;
int a,b,c;
va_start(args, val);
a = va_arg(args,int); // не 3
b = va_arg(args,int); // не 1
c = va_arg(args,int); // не 5
va_end(args);
// что то полезное
}
// в идеале хотелось бы передавать разные функции, вполне определенные
// как например
void anotherOp(int* val, int a, int b, int c)
{
// что то полезное
}
int main(int argc, char* argv[])
{
int val = 2;
perfOp(&val, someOp, 3, 1, 5);
perfOp(&val, anotherOp, 3, 1, 5);
return 0;
}