2
多態類的boost序列化似乎不起作用(1.40+ boost),例如,使用下面的代碼,我相信我遵循了以下規則:導出類和 我在gcc4.4(ubuntu)和windows VS2010(使用boost 1.48)上嘗試過: 在以下程序中,我期望同時打印10和100 ,但它只打印10個,這意味着它只能序列化基類;boost序列化多態性問題
我大部分都是從boost文檔中複製出來的,但它仍然不起作用;任何人有任何想法? 非常感謝 LS
#include <iostream>
#include <sstream>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/serialization.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/export.hpp>
#define NVP(X) X
class base {
public:
friend class boost::serialization::access;
base(){ v1 = 10;}
int v1;
template<class Archive>
void serialize(Archive & ar, const unsigned int file_version)
{
ar & NVP(v1);
}
};
class derived : public base {
public:
friend class boost::serialization::access;
int v2 ;
derived() { v2 = 100;}
template<class Archive>
void serialize(Archive & ar, const unsigned int file_version){
boost::serialization::base_object<base>(* this);
ar & NVP(v2);
}
};
BOOST_CLASS_EXPORT(base);
BOOST_CLASS_EXPORT_GUID(derived, "derived");
int main ()
{
std::stringstream ss;
boost::archive::text_oarchive ar(ss);
base *b = new derived();
ar << NVP(b);
std::cout << ss.str();
}
我甚至不知道這是否是這個問題的正確答案,但爲了搞笑+1 – Rado