我无法使用boost::serialization
,因为它具有库依赖性,所以我试图找出一种方法来自己做。这并不重要,这意味着从boost::serialization
复制。如何加载序列化的boost :: variant?
看完this answer to a similar question之后,我看了一下boost/serialization/variant.hpp,发现save()
这个功能对我来说是直接的和可以理解的。
然而load()
功能看起来比较复杂:有涉及load()
和variant_impl<types>::load()
和递减which
参数递归。 显然,代码会遍历每种类型的变体,以便将int which
转换为类型。 其余的超越了我。
我知道增强有很多代码,使它可移植,所以也许有一个不太便携但更容易的方法来做到这一点?
我想把我的数据放入一个MFC'CArchive'对象中......我尝试删除NVP的东西,但是'CArchive'似乎不适合所有这些.. – foraidt
@foraidt: 'CArchive'仅适用于从'CObject'派生的类型,'boost :: variant <>'显然不适用。 – ildjarn
@ildjarn CArchive :: operator <<()'被重载了相当多的类型(请参阅http://msdn.microsoft.com/en-us/library/331a7zh8%28v=vs.80%29.aspx) 。这允许序列化比'CObject'派生的类多得多。我的目标是序列化不是'variant'本身,而是它包含的数据。 – foraidt