我的程序中有各种c ++结构,我想要一个函数在输入中接受这个结构中的一个,并让我在一个int数组中包含byte中输入结构的每个字段的大小。有人帮我吗?
答案 0 :(得分:3)
答案 1 :(得分:1)
这是一种方法:
使用重载函数,并在每次重载(对于每个struct
)中,将struct
中每个字段的大小显式插入到传入的数组中(vector<size_t>
是更好的选择)。
这意味着您必须在每次重载时对每个结构中的字段进行硬编码。
或者,如果您乐意使用boost :: fusion,并使用一些宏,您应该能够提升结构 - 然后您可以迭代它。我已经在SO上的某个地方发布了一个答案的答案,将其挖掘出来......
这是:Boost MPL to generate code for object serialization?,展示如何促进&#34;结构,然后迭代成员。在这种情况下,它是用于序列化的,但是使它适应它以返回每个字段的大小是微不足道的。您可以在编译时使用MPL执行此操作并生成具有每个字段大小的MPL序列 - 但这有点棘手 - 这一切都取决于您想要实现的目标......