c++ - C/C++ 结构枚举

标签 c++ data-structures

假设我有一个像这样的结构或类似的类(C++):

    struct str
    {
        int a = 5;
        char b = 'x';
    };

有没有办法枚举它的成员。我想找到成员的名字、值,如果可能的话还有数据类型。

我的目的是构建一个配置文件。所以我基本上必须以某种方式表示命令包结构。当实际数据到来时,我想将数据包与此配置文件进行比较,然后进行处理。所以有不同的命令类型。因此,每次数据包到来时,我都必须获取其操作码并使用结构名称对其进行检查,然后返回代表该数据包格式的适当结构。

我的想法是用结构来表示命令包格式。如果你能推荐其他数据结构来保存这个,那么也可以。语言可以是 C 或 C++。性能是重中之重,因此不鼓励使用 xml 和类似类型。首选内存数据结构。非常感谢任何帮助。谢谢

最佳答案

使用 boost.hana 的基于宏的伪反射:

#include <iostream>
#include <string>
#include <boost/hana.hpp>

struct Person
{
    BOOST_HANA_DEFINE_STRUCT
    (
        Person
    ,  (::std::string, name)
    ,  (int, age)
    );
};

int main()
{
    Person john{"John", 30};
    ::boost::hana::for_each
    (
        ::boost::hana::members(john)
    ,   [](auto const & member)
        {
            ::std::cout << member << ::std::endl;
        }
    );
    return 0;
}

关于c++ - C/C++ 结构枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56074991/

相关文章:

c++ - 是使用T const&还是T&&

c++ - new[] 在填充之前不会减少可用内存

java - 经常查询对象列表的最佳数据结构

c++ - 线程安全游戏引擎 : Multi-Threading Best Practices?

c# - 如何使用命名管道(C++ 服务器,C# 客户端)

c++ - 与使用声明在 GCC 中编译但在 MSVS 中编译的范围相同的类声明

algorithm - 在多个排序数组中搜索及其复杂性

algorithm - 基于 Trie 的地址簿和按姓名和联系电话高效搜索

c - ADT 和类之间的区别?

database - 具有固定列数的可搜索位矩阵的一个好的表示形式是什么?