gpt4 book ai didi

c++ - 如何加载序列化的 boost::variant?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:43 24 4
gpt4 key购买 nike

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

看完this answer to a similar question ,我看了看boost/serialization/variant.hpp并找到save()对我来说简单易懂的功能。

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

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

最佳答案

如果您要从 boost/serialization/variant.hpp 的拷贝中删除序列化内容(除了 Archive 模板参数)——即抛出您自己的异常类型并进行更改,例如

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

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

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

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

关于c++ - 如何加载序列化的 boost::variant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6761453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com