Mi chiedo se esiste un modo semplice per chiamare una funzione da una stringa. Conosco un modo semplice, usando 'se' e 'else'.Come chiamare una funzione con il suo nome (std :: string) in C++?
int function_1(int i, int j) {
return i*j;
}
int function_2(int i, int j) {
return i/j;
}
...
...
...
int function_N(int i, int j) {
return i+j;
}
int main(int argc, char* argv[]) {
int i = 4, j = 2;
string function = "function_2";
cout << callFunction(i, j, function) << endl;
return 0;
}
questo c'è l'approccio di base
int callFunction(int i, int j, string function) {
if(function == "function_1") {
return function_1(i, j);
} else if(function == "function_2") {
return function_2(i, j);
} else if(...) {
} ...
...
...
...
return function_1(i, j);
}
è qualcosa di più semplice?
/* New Approach */
int callFunction(int i, int j, string function) {
/* I need something simple */
return function(i, j);
}
È possibile migliorare leggermente utilizzando std :: function e la sintassi degli elenchi di inizializzatori. –
@LokiAstari: 'std :: function' è C++ 11 Immagino. – LihO
@LihO: Mi piace il tuo approccio. Grazie. –