2

我无法使用boost::serialization,因为它具有库依赖项,所以我试图自己找出一种方法。这是否意味着从boost::serialization.

在阅读了类似问题的答案后,我查看了boost/serialization/variant.hpp并找到save()了对我来说直截了当且易于理解的函数。

然而,这个load()函数看起来更复杂:有一个涉及 load()andvariant_impl<types>::load()和一个递减which参数的递归。因此,显然代码会迭代每种类型的变体,以便将其int which转换为类型。其余的超出了我的范围。

我知道 boost 有很多代码可以使其可移植,所以也许有一种不太便携但更简单的方法来做到这一点?

4

1 回答 1

1

如果您要从 boost/serialization/variant.hpp 的副本中删除序列化内容(除了存档模板参数) - 即抛出您自己的异常类型并更改例如

ar >> BOOST_SERIALIZATION_NVP(which);
// to:
ar >> which;

然后看起来您应该能够分别在保存/加载函数中用 std::ostream 或 std::istream 替换存档。

没试过,但乍一看它应该可以工作。

我想如果不使用 boots::serialization,它确实取决于您实际使用什么来序列化数据?

于 2011-07-20T12:08:02.357 回答