#include void function1() { std::cout << "fonction 1" << std::endl; } void function2() { std::cout << "fonction 2" << std::endl; } int main() { std::string name = "function1"; if (name == "function1") function1(); else if (name == "function2") function2(); return 0; }
#include void function1() { std::cout << "fonction 1" << std::endl; } void function2() { std::cout << "fonction 2" << std::endl; } typedef void (*func)(); struct Func { std::string name_; func pFunc_; }; static const Func tabFunc[] = { {"function1", function1}, {"function2", function2} // etc... }; int main() { std::string name = "function1"; const int size = sizeof (tabFunc) / sizeof (*tabFunc); for (int i = 0; i < size; ++i) if (tabFunc[i].name_ == name) (*tabFunc[i].pFunc_)(); // On peut ajouter un "break" si le nom de méthode est unique return 0; }
#include void function1() { std::cout << "fonction 1" << std::endl; } void function2() { std::cout << "fonction 2" << std::endl; } typedef void (*func)(); struct Func { std::string name_; func pFunc_; }; #define DECLARE(X) {#X, X} static const Func tabFunc[] = { DECLARE(function1), DECLARE(function2) // etc... }; int main() { std::string name = "function1"; const int size = sizeof (tabFunc) / sizeof (*tabFunc); for (int i = 0; i < size; ++i) if (tabFunc[i].name_ == name) (*tabFunc[i].pFunc_)(); // On peut ajouter un "break" si le nom de méthode est unique return 0; }