Istnieją 2 znane mi rozwiązania:
---
Pierwszy (staromodny, w stylu C):
#include <cstdarg>
void foo(int arg_count, ...) // arg_count, ilość argumentów, potrzebna do pętli
{
va_list ap;
va_start(ap,arg_count);
for(int i=0; i<arg_count; i++)
{
int x=va_arg(ap,int);
switch(x)
{ /*tu cały mechanizm switcha*/ }
}
}
Wywołujesz: foo(4,0,1,2,3); Pierwszy argument jest ilością pozostałych argumentów.
---
Drugi (nowocześniejszy, w stylu C++):
#include <initializer_list>
void bar(std::initializer_list<int> il)
{
std::vector<int> vec(il.begin(),il.end());
for(unsigned int v=0; v<vec.size(); v++)
{
switch(vec[v])
{ /*tu cały mechanizm switcha*/ }
}
}
Wywołujesz: bar({0,1,2,3}); Zwróć uwagę na klamry {}, są potrzebne wewnątrz nawiasów, nie trzeba podawać ilości argumentów.