[英]Boost binary serialization problem with abstract class
乔人,
我很安静,不希望找到问题的根源。 我正在使用 Boost:serialization (版本 1.46.1),并且使用binary_oarchive
一切正常。 我有一个类层次结构,因此,我使用register_type()
。
然而,当我开始使用binary_iarchive
来反序列化我的对象时,我得到了
错误:无法分配抽象类型的 object
它来自对输入存档的register_type()
调用。
谷歌搜索后,我发现宏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
。
错误:无法分配抽象类型的 object
似乎在您的代码中的某处,您正在创建抽象class 的实例。 这就是您收到此错误的原因,因为禁止创建抽象class 的实例。 您只能创建具体类的实例。
你需要告诉 boost X 是一个抽象的 class,方法是:
BOOST_SERIALIZATION_ASSUME_ABSTRACT(X);
现在按照这个主题进一步解释它:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.