Unrue
08-08-2011, 17:43
Ciao a tutti,
sto cercando una soluzione elegante ad un problema magari stupido, ma che al momento non trovo. Ho una funzione con all'interno 3 casi possibili definiti mediante switch-case. Solo se siamo nel primo caso ho bisogno di un parametro passato alla funzione, negli altri casi non serve ( pseudo-C-codice):
funzione(){
switch(a){
case(1):
// serve un argomento
case(2): // non serve
case(3):// non serve
};
}
La prima cosa che farei è utilizzare le ellissi e le va_list:
funzione(int num_argomenti, ...){
...
switch(a){
case(1):
// serve un argomento
case(2): // non serve
case(3):// non serve
};
}
Il problema è che con le variadic function, ho bisogno di dargli un argomento fisso con cui gli indico il numero di argomenti che passerò dopo di esso. Vorrei evitare questa cosa, anche perché avrebbe senso solo se eseguo poi il caso (1). Altra soluzione è separare il caso (1) mettendolo in una funzione a parte, ma vorrei evitare anche questo. La terza soluzione sarebbe passare un parametro che utilizzo effettivamente solo nel caso 1, negli altri potrei passargli un qualsiasi valore, tanto non verrebbe considerato. Ma non mi piace molto. Altre idee? :confused:
sto cercando una soluzione elegante ad un problema magari stupido, ma che al momento non trovo. Ho una funzione con all'interno 3 casi possibili definiti mediante switch-case. Solo se siamo nel primo caso ho bisogno di un parametro passato alla funzione, negli altri casi non serve ( pseudo-C-codice):
funzione(){
switch(a){
case(1):
// serve un argomento
case(2): // non serve
case(3):// non serve
};
}
La prima cosa che farei è utilizzare le ellissi e le va_list:
funzione(int num_argomenti, ...){
...
switch(a){
case(1):
// serve un argomento
case(2): // non serve
case(3):// non serve
};
}
Il problema è che con le variadic function, ho bisogno di dargli un argomento fisso con cui gli indico il numero di argomenti che passerò dopo di esso. Vorrei evitare questa cosa, anche perché avrebbe senso solo se eseguo poi il caso (1). Altra soluzione è separare il caso (1) mettendolo in una funzione a parte, ma vorrei evitare anche questo. La terza soluzione sarebbe passare un parametro che utilizzo effettivamente solo nel caso 1, negli altri potrei passargli un qualsiasi valore, tanto non verrebbe considerato. Ma non mi piace molto. Altre idee? :confused: