gpt4 book ai didi

c++ - 将反序列化 boost 为动态类型

转载 作者:行者123 更新时间:2023-11-30 04:24:00 25 4
gpt4 key购买 nike

In this link你可以找到 boost 序列化和反序列化。但是在Deserialization方法中我们需要给出要反序列化的类的具体对象。例如:newg

gps_position newg;
{
// create and open an archive for input
std::ifstream ifs("filename");
boost::archive::text_iarchive ia(ifs);
// read class state from archive
ia >> newg;
// archive and stream closed when destructors are called
}

由于 C++ 没有像 C# 中的 Object 这样的任何基类,我如何反序列化为一个普通对象,然后对其进行类型转换?

据我所知,我可以创建一个自定义类调用对象并从中继承所有其他类,但即使在那种情况下也会出现反序列化 2 次的情况。这个问题有什么解决方法吗?

最佳答案

Boost.serialization 必须指定具体类。由于 c++ 没有虚拟构造函数,反序列化器必须知道要创建什么对象。共同的祖先也无济于事。必须在反序列化之前创建对象。

如果要序列化和反序列化类层次结构,则必须在序列化对象和反序列化时显式写入类 Id - 显式读取此 Id 以做出决定 - 创建和反序列化什么对象。

关于c++ - 将反序列化 boost 为动态类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043640/

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