在 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中文网其他相关文章!