2012-03-06 55 views
1

的领域我在我的节目不同的C++结构,我想一个函数来接受这个结构在输入之一,并让我在一个int数组包含字节输入结构的每个领域的大小。有人帮我吗?尺寸的C++结构

+0

可以修改/替换结构,还是你坚持与他们? – 2012-03-06 11:08:33

回答

3

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


1.准确地说,这是不可能有这种由语言自动完成。当然,你可以手动跟踪这些东西(如@Nim的建议)。

1

下面是一个方法:

使用一个重载的函数,并且在每个过载(对于每个struct),明确地插入每场的从struct大小成在数组传递(vector<size_t>是更好的选择)。

这意味着有效,你必须硬编码在每个超载每个结构的字段。

另外,如果你是快乐的使用boost ::融合,有一些宏,你应该能够推动结构 - 然后你就可以遍历。我已经在SO的某个地方发布了一个答案,将它挖掘出来...

这里是:Boost MPL to generate code for object serialization?,显示如何“促进”结构,然后遍历成员。在那种情况下,它是用于序列化的,但它适应它来返回每个字段的大小是微不足道的。你可以在编译时使用MPL做到这一点,并生成每个字段的大小MPL序列 - 但是这一点更靠谱 - 这一切都取决于你想要达到什么真的...