如何解决在C ++中按名称访问结构字段的现代方法
我想检查一下在现代C ++中是否有一种直观,简单的方法来按名称访问结构字段。 我知道已经提出并回答了类似的问题,并且C ++反射是一个经过充分研究的主题。 我遇到过类似的图书馆:
但是所有这些方法的共同点是,它们仅允许您获取结构中的字段总数,或者以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
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。