繁体   English   中英

用抽象 class 提升二进制序列化问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM