【发布时间】:2012-03-06 10:57:33
【问题描述】:
我的程序中有各种 c++ 结构,我想要一个函数在输入中接受这个结构之一,并让我进入一个包含输入结构每个字段的大小的 int 数组(以字节为单位)。谁能帮帮我?
【问题讨论】:
-
你能修改/替换这些结构,还是你被他们困住了?
我的程序中有各种 c++ 结构,我想要一个函数在输入中接受这个结构之一,并让我进入一个包含输入结构每个字段的大小的 int 数组(以字节为单位)。谁能帮帮我?
【问题讨论】:
【讨论】:
这是一种方法:
使用重载函数,并在每个重载中(对于每个struct),将每个字段的大小从该struct 显式插入传入的数组中(vector<size_t> 是更好的选择)。
这实际上意味着您必须在每个重载中对每个结构中的字段进行硬编码。
或者,如果您乐于使用 boost::fusion,通过一些宏,您应该能够提升结构 - 然后您可以对其进行迭代。我已经在 SO 的某个地方发布了一个带有示例的答案,我会挖掘它......
这里是:Boost MPL to generate code for object serialization?,展示了如何“提升”结构然后迭代成员。在这种情况下,它是用于序列化的,但调整它以返回每个字段的大小是微不足道的。您可以在编译时使用 MPL 执行此操作,并生成具有每个字段大小的 MPL 序列 - 但这有点棘手 - 这完全取决于您真正想要实现的目标......
【讨论】: