Um die Effizienz Ihrer Skript-Engine zu steigern, sollten Sie die Nutzung einer STL-Zuordnung für die Verwaltung von Funktionszeigern in Betracht ziehen. Dieser Ansatz macht langwierige bedingte Anweisungen zum Aufrufen bestimmter Funktionen überflüssig.
Für diese Implementierung beginnen Sie damit, Ihren Funktionszeigertyp zur besseren Lesbarkeit als Typedef zu deklarieren:
typedef void (*ScriptFunction)(void); // function pointer type
Als nächstes definieren Sie eine unordered_map namens script_map mit Zeichenfolgenschlüsseln, die Funktionsnamen und ScriptFunction-Werte für die entsprechenden Zeigeradressen darstellen:
typedef std::unordered_map<:string scriptfunction> script_map;
Beispielfunktionsregistrierung:
void some_function() {}
script_map m;
m.emplace("blah", &some_function);
Um eine Funktion aufzurufen, definieren Sie eine call_script-Funktion:
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
}
}
Betonen Sie, dass Sie den ScriptFunction-Typ auf std::function*whatever*/> verallgemeinern können, um mehr als nur bloße Funktionszeiger abzudecken.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3