Sto cercando di capire come sia possibile assegnare un puntatore a funzioni a funzioni con un numero diverso di argomenti.C++: puntatore alle funzioni con numero variabile di argomenti
Ho un ciclo while che accetta un numero di funzioni diverse come un'istruzione condizionale, quindi invece di scrivere più cicli while con lo stesso codice all'interno mi piacerebbe averne uno con un puntatore a funzione. Tutte le funzioni sono in formato bool f(...)
. Credo che un certo codice sarà meglio illustrare quello che voglio dire:
int a, b, c, d;
MyClass* my_class;
typedef bool (MyClass::*my_fun_t)();
my_fun_t my_fun;
if (condition1)
my_fun = &MyClass::function_one();
else if (condition2)
my_fun = &MyClass::function_two(a, b);
else if (condition3)
my_fun = &MyClass::function_three(a, b, c);
else if (condition4)
my_fun = &MyClass::function_four(a, b, c, d);
while ((my_class->*my_fun)())
{ ... }
Ora, questo, ovviamente, non funziona perché le funzioni hanno firme diverse. È possibile farlo funzionare in modo simile? I functoid sono qualcosa che dovrei guardare?
Come sapresti come applicare quel puntatore a funzione se non sai quanti argomenti ci vogliono? – mfontanini
Si noti che la sintassi dell'assegnazione a un puntatore di funzione è comunque non valida, si * sta * invocando * le funzioni, prendendo il risultato, ottenendo un puntatore alla sua memoria temporanea e assegnando * quel * al puntatore della funzione dichiarato in precedenza. –
Sì, lo so che non è una sintassi valida. Mostra solo l'idea. – jaho