在C 中,通常使用條件語句根據給定的值呼叫函數細繩。然而,這種方法可能冗長且不靈活。
透過名稱呼叫函數的能力稱為反射。不幸的是,C 本身並不支援此功能。
一種解決方法是建立一個將函數名稱 (std::string) 與函數指標。對於具有相同原型的函數,此技術簡化了過程:
<code class="cpp">#include <iostream> #include <map> int add(int i, int j) { return i + j; } int sub(int i, int j) { return i - j; } typedef int (*FnPtr)(int, int); int main() { // Initialize the map: std::map<std::string, FnPtr> myMap; myMap["add"] = add; myMap["sub"] = sub; // Usage: std::string s("add"); int res = myMap[s](2, 3); std::cout << res; }</code>
在此範例中,myMap[s](2, 3) 檢索映射到字串s 的函數指標並呼叫對應的函數參數2 和3。輸出將為 5。
以上是如何使用 std::map 在 C 中實現類似反射的功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!