Чтобы повысить эффективность обработчика сценариев, рассмотрите возможность использования карты STL для управления указателями функций. Этот подход устраняет необходимость в длинных условных операторах для вызова определенных функций.
Для этой реализации начните с объявления типа указателя функции как typedef для удобства чтения:
typedef void (*ScriptFunction)(void); // function pointer type
Далее определите unordered_map с именем script_map со строковыми ключами, представляющими имена функций и значения ScriptFunction для соответствующих адресов указателя:
typedef std::unordered_map<:string scriptfunction> script_map;
Пример регистрации функции:
void some_function() {}
script_map m;
m.emplace("blah", &some_function);
Чтобы вызвать функцию, определите функцию call_script:
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
}
}
Подчеркните, что вы можете обобщить тип ScriptFunction до std::function*whatever*/>, чтобы обслуживать больше, чем просто указатели на функции.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3