gpt4 book ai didi

c++ - 使用抽象类 boost 二进制序列化问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:14 30 4
gpt4 key购买 nike

大家好,

我很想找到问题的根源。我正在使用 Boost:serialization(版本 1.46.1)并且使用 binary_oarchive 一切正常。我有一个类层次结构,因此,我使用 register_type()

但是,在我使用 binary_iarchive 反序列化我的对象的地方,我得到了

error: cannot allocate an object of abstract type

它来自对输入存档的 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

最佳答案

error: cannot allocate an object of abstract type

似乎在您的代码中的某处,您正在创建一个抽象 类的实例。这就是您收到此错误的原因,因为禁止创建抽象 类的实例。您只能创建具体类的实例。

您需要告诉 boost X 是一个抽象类,方法是:

BOOST_SERIALIZATION_ASSUME_ABSTRACT(X);

现在按照这个主题进一步解释它:

关于c++ - 使用抽象类 boost 二进制序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6537252/

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