#include #include #include #include #include class A { friend class boost::serialization::access; int i; template void serialize (Archive& ar, const unsigned int version) { ar & BOOST_SERIALIZATION_NVP( i ); } virtual void foo() {} }; template class B: public A { friend class boost::serialization::access; unsigned int a; template void serialize (Archive& ar, const unsigned int version) { ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( A ); ar & BOOST_SERIALIZATION_NVP( a ); } }; //typedef B bint; BOOST_CLASS_EXPORT( B ) BOOST_CLASS_EXPORT( A ) int main() { { std::ofstream fs( "test.xml" ); BOOST_ASSERT( fs.good() ); boost::archive::xml_oarchive archive( fs ); A* b = new B(); archive & BOOST_SERIALIZATION_NVP( b ); delete b; } std::cout << "finished writing" << std::endl; { std::ifstream fs( "test.xml" ); BOOST_ASSERT( fs.good() ); boost::archive::xml_iarchive archive( fs ); A* b; archive & BOOST_SERIALIZATION_NVP( b ); delete b; } std::cout << "finished reading" << std::endl; }