mar*_*rco 5 c++ serialization boost stream
我有以下问题..
我有一个名为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
{
...
}
Run Code Online (Sandbox Code Playgroud)
所以我以经典的方式序列化结构:
....
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
Run Code Online (Sandbox Code Playgroud)
现在问题......在反序列化方面,我遵循相同的(反向)程序...如果我单独反序列化Ah中的结构(不包括在项目Bh中)和Bh中的结构(不包括在项目中啊)所有工作....但如果我在项目中包括两个类,反序列化适用于一个类,但在"archive >> m"指令中抛出"流错误异常"; 对于另一个......这似乎是注册类中的冲突或类似的东西...任何想法?谢谢......
您是否在派生类序列化函数中序列化了基础数据?
ar & boost::serialization::make_nvp( "base", boost::serialization::base_object< Base >( *this ) );
Run Code Online (Sandbox Code Playgroud)
我不知道这是否有帮助,但我用
BOOST_CLASS_IMPLEMENTATION(x, boost::serialization::object_serializable);
BOOST_CLASS_TRACKING(x, boost::serialization::track_never)
Run Code Online (Sandbox Code Playgroud)
将类注册为可序列化。希望有帮助:3
| 归档时间: |
|
| 查看次数: |
1858 次 |
| 最近记录: |