【发布时间】:2014-11-19 18:47:27
【问题描述】:
我有一个向量,其中包含带有 boost::variant 元素的结构。
现在我必须序列化这个向量。由于规范的原因,我必须计算保存该向量所需的八位字节。现在我正在寻找一种以简单的方式实现这一点的选项。
int allSize = 0;
for(auto it=vec.begin(); it != vec.end(); it++){
//something like size = sizeof(it->variant)
allsize += size;
}
我试图用
获取元素的大小sizeof(it->variant.type())
但这仅显示变体元素的大小(这是从变体中保存的最大元素的大小)
那么,有没有一种简单的方法来获取序列化数据的大小? 还是我必须用大约 7 个模板写一个访问者?
【问题讨论】:
-
变体成员类型是什么?您将如何序列化(总是将元素数据按位复制为 POD?)
-
是的,例如:变体成员是一个结构,它有一个 time64 值和一个 uint8 值。所以我序列化了一个 uint8 和一个 uint64 (这是 time64 值)。我必须这样做,因为 time64 没有序列化方法。