gpt4 book ai didi

c++ - 在 C++ 中按名称访问结构字段的现代方法

转载 作者:行者123 更新时间:2023-12-01 14:42:14 24 4
gpt4 key购买 nike

我想检查是否有一种直观且简单的方法可以在现代 C++ 中按名称访问结构字段。
我知道已经提出并回答了类似的问题,并且 C++ 反射是一个经过充分研究的主题。
我遇到过这样的图书馆:

  • boost-hana
  • boost-reflect
  • visit_struct
  • magic_get :

  • 但是所有这些方法的共同点是,它们只允许您获取结构中的字段总数或在 for_each 中执行某个操作。结构的所有字段的方式。
    是的,我显然可以通过使用 for_each 来检查我正在寻找的字段的特定“名称”。这些库提供的功能。但我只是想检查是否有任何其他琐碎/众所周知的库已经这样做了。
    我希望能够处理任意数量的嵌套结构,这就是为什么我正在寻找开箱即用的东西。
    正如 Louis Go 所指出的,拥有一个像这样的访问器会很棒:
    auto field = namespace::getField<mystruct>("fieldname");

    最佳答案

    您可以使用成员访问运算符按名称访问类成员。例子:

    struct foo {
    int bar;
    } instance;

    instance.bar = 42; // access by name

    如果您的意思是基于字符串变量而不是通过编译时标识符访问成员,那么不。从 C++20 开始,C++ 仍然没有实现这一点所需的反射特性。
    很多时候,当程序员想要这个的时候,他们真正需要的是一个关联容器,比如 std::map .

    关于c++ - 在 C++ 中按名称访问结构字段的现代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63467178/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com