Pour améliorer l'efficacité de votre moteur de script, envisagez d'utiliser une carte STL pour gérer les pointeurs de fonction. Cette approche élimine le besoin de longues instructions conditionnelles pour appeler des fonctions spécifiques.
Pour cette implémentation, commencez par déclarer votre type de pointeur de fonction en tant que typedef pour plus de lisibilité :
<code class="c++">typedef void (*ScriptFunction)(void); // function pointer type</code>
Ensuite, définissez un unordered_map nommé script_map avec des clés de chaîne représentant les noms de fonctions et les valeurs ScriptFunction pour les adresses de pointeur correspondantes :
<code class="c++">typedef std::unordered_map<std::string, ScriptFunction> script_map;</code>
Exemple d'enregistrement de fonction :
<code class="c++">void some_function() {} script_map m; m.emplace("blah", &some_function);</code>
Pour appeler une fonction, définissez une fonction call_script :
<code class="c++">void call_script(const std::string& pFunction) { auto iter = m.find(pFunction); if (iter == m.end()) { // function not found } else { (*iter->second)(); // invoke the function via the pointer } }</code>
Insistez sur le fait que vous pouvez généraliser le type ScriptFunction à std::function* peu importe*/> pour répondre à plus que de simples pointeurs de fonctions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!