繁体   English   中英

提升序列化/反序列化存档“流错误”异常

[英]Boost serialization/deserialization archive “stream error” exception

我有以下问题..

我有一个名为Ah的文件和一个文件Bh,每个包含一些这样的结构:(两个类中的结构是不同的)

struct Base
{
    friend class access;

    template <typename Archive>
    void serialize(Archive& ar,const unsigned int version)
    {
        ar & fieldLength;
        ar & fieldMD;
        ar & fieldTime_Stamp;
    }   
   public:
        unsigned int fieldLength;
        unsigned int fieldMD;
        unsigned int fieldTime_Stamp;

       virtual void f(){} //to be polymorphic the struct
};

struct Derived:public Base
{
    ...
}

所以我以经典的方式序列化结构:

....

std::ostringstream archive_stream;

boost::archive::text_oarchive archive(archive_stream);

archive.register_type(static_cast<Derived*>(NULL))

archive <<p;   // where p is a pointer to Base

现在问题......在反序列化方面,我遵循相同的(反向)程序...如果我单独反序列化Ah中的结构(不包括在项目Bh中)和Bh中的结构(不包括在项目中啊)所有工作....但如果我在项目中包括两个类,反序列化适用于一个类,但在“archive >> m”指令中抛出“流错误异常”; 对于另一个......这似乎是注册类中的冲突或类似的东西...任何想法?谢谢......

您是否在派生类序列化函数中序列化了基础数据?

ar & boost::serialization::make_nvp( "base", boost::serialization::base_object< Base >( *this ) );

而且我不知道这是否会有所帮助,但我会使用

BOOST_CLASS_IMPLEMENTATION(x, boost::serialization::object_serializable);
BOOST_CLASS_TRACKING(x, boost::serialization::track_never)

将类注册为serialiseable。 希望有所帮助:3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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