首页 > 后端开发 > C++ > 正文

如何使用 std::map 在 C 中实现类似反射的功能?

DDD
发布: 2024-10-27 01:22:30
原创
894 人浏览过

How to Achieve Reflection-like Functionality in C   Using std::map?

如何在 C 中通过函数名称 (std::string) 调用函数

在 C 中,通常使用条件语句根据给定的值调用函数细绳。然而,这种方法可能冗长且不灵活。

C 中的反射

通过名称调用函数的能力称为反射。不幸的是,C 本身并不支持此功能。

使用 std::map 的解决方法

一种解决方法是创建一个将函数名称 (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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!