#include #define BOOST_TEST_MAIN #define BOOST_TEST_MODULE Serialization problem #include #include #include #include class A { friend class boost::serialization::access; template void serialize(Archive & ar, const unsigned int version) {} public: virtual ~A(){} }; class RealBase : public A { friend class boost::serialization::access; template void serialize(Archive & ar, const unsigned int version) { ar & boost::serialization::base_object(*this); } public: }; class B : public RealBase { friend class boost::serialization::access; protected: RealBase * m_arg; template void serialize(Archive & ar, const unsigned int version) { ar & boost::serialization::base_object(*this); ar & m_arg; } public: void add_child(RealBase *c) { m_arg=c; }; }; class C : public RealBase { friend class boost::serialization::access; template void serialize(Archive & ar, const unsigned int version) { ar & boost::serialization::base_object(*this); } public: }; BOOST_AUTO_TEST_CASE(test_serialization) { std::strstream ld; boost::archive::text_oarchive oa(ld); B * const za1=new B; C za2; za1->add_child(new C); oa << const_cast(za2); oa << za1; delete za1; }