要提高腳本引擎的效率,請考慮利用 STL 映射來管理函數指標。這種方法不需要使用冗長的條件語句來呼叫特定函數。
對於此實現,首先將函數指標類型宣告為typedef 以提高可讀性:
typedef void (*ScriptFunction)(void); // function pointer type
接下來,定義一個名為script_map 的unordered_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