#include #include #include #include #include #include using namespace boost; using namespace std; class Base1{ friend class boost::serialization::access; public: Base1(){} virtual void print(){ cout << "Base1" << endl;} private: template void serialize(Archive & ar, const unsigned int version){} }; BOOST_CLASS_EXPORT_GUID(Base1,"bugtry.Base1") class Base2{ friend class boost::serialization::access; public: Base2(){} virtual void print(){ cout << "Base2" << endl;} private: template void serialize(Archive & ar, const unsigned int version){ } }; BOOST_CLASS_EXPORT_GUID(Base2,"bugtry.Base2") class Derived:public Base1, protected Base2{ friend class boost::serialization::access; public: Derived(){}; virtual void print(){ cout << "Derived" << endl;} private: template void serialize(Archive & ar, const unsigned int version){ ar & boost::serialization::base_object(*this); ar & boost::serialization::base_object(*this); } }; BOOST_CLASS_EXPORT_GUID(Derived,"bugtry.Derived") int main(int argc,char **argv) { Derived d; d.print(); ofstream o("bugtry.out"); boost::archive::text_oarchive out(o); out << d; return 0; }