c ++结构域的字段大小

时间:2012-03-06 10:57:33

标签: c++ struct field sizeof

我的程序中有各种c ++结构,我想要一个函数在输入中接受这个结构中的一个,并让我在一个int数组中包含byte中输入结构的每个字段的大小。有人帮我吗?

2 个答案:

答案 0 :(得分:3)

这是不可能的。 1 C ++没有reflection


<子> 1。确切地说,语言无法自动完成此操作。当然,您可以手动跟踪这些内容(如@Nim的建议)。

答案 1 :(得分:1)

这是一种方法:

使用重载函数,并在每次重载(对于每个struct)中,将struct中每个字段的大小显式插入到传入的数组中(vector<size_t>是更好的选择)。

这意味着您必须在每次重载时对每个结构中的字段进行硬编码。

或者,如果您乐意使用boost :: fusion,并使用一些宏,您应该能够提升结​​构 - 然后您可以迭代它。我已经在SO上的某个地方发布了一个答案的答案,将其挖掘出来......

这是:Boost MPL to generate code for object serialization?,展示如何促进&#34;结构,然后迭代成员。在这种情况下,它是用于序列化的,但是使它适应它以返回每个字段的大小是微不足道的。您可以在编译时使用MPL执行此操作并生成具有每个字段大小的MPL序列 - 但这有点棘手 - 这一切都取决于您想要实现的目标......