抽象类的Boost二进制序列化问题
Boost binary serialization problem with abstract class
Ciao伙计们,
我非常不想找到问题的根源。我使用Boost:serialization(版本1.46.1),binary_oarchive
的一切都很好。我有一个类的层次结构,因此,我使用register_type()
。
然而,当我开始使用binary_iarchive
来取消对对象的序列化时,我得到了
错误:无法分配抽象类型的对象
它来自于CCD_ 4对输入档案的调用。
在谷歌上搜索后,我发现宏BOOST_SERIALIZATION_ASSUME_ABSTRACT(T)
必须用于抽象类。问题是它根本不起作用:)。有人能帮我吗?
更多关于我的代码:
virtual void AbstractClass::initBinarySerialization(binary_iarchive& ia)
{
ia.register_type<AbstractClass>();
}
virtual void SubClass::initBinarySerialization(binary_iarchive& ia)
{
AbstractClass::initBinarySerialization(ia);
ia.register_type<SubClass>();
}
在阅读档案之前,我打电话给initBinarySerialization
。
错误:无法分配抽象类型的对象
似乎在代码中的某个地方,您正在创建抽象类的实例。这就是为什么会出现这个错误,因为创建抽象类的实例是被禁止的。您只能创建具体类的实例。
您需要告诉boost X是一个抽象类,方法是:
BOOST_SERIALIZATION_ASSUME_ABSTRACT(X);
现在按照这个主题进一步解释:
- 如何使用Boost.serialize序列化派生模板类
相关文章:
- C++boost序列化多态性问题
- 提升序列化 1:73 的向后兼容性问题
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 在 C# 中序列化这些值以在C++中作为已知结构正确读取时遇到问题
- 使用 boost::序列化将派生类指针序列化为向量时出现问题
- 更改命名空间以自定义 Boost XML 的标记名称后的反序列化问题
- 提升反序列化问题:运行时输入流错误 (c++)
- 如何解决序列化问题 MQL4?
- 序列化 压缩的问题与Boost库
- GPB 序列化到函数的问题
- xerces c 从刚刚序列化的对象创建对象的问题
- 使用 istream >> 反序列化时出现问题
- 调试Boost序列化segfault问题
- boost矢量序列化附加问题
- 序列化哪里出了问题
- 使用Boost:serialize反序列化指向派生类的指针时出现问题
- gSoap C++-C#反序列化问题
- 关于序列化、反序列化的设计问题
- 抽象类的Boost二进制序列化问题
- juce::String的boost反序列化问题,带有XML范围的存档