#include using namespace std; class A { public: A(std::string a); virtual ~A(); virtual void anA() = 0; std::string m_name; template void serialize(Archive &ar, const unsigned int version) { ar & m_name; } }; class B :public A { public: B(); virtual ~B(); virtual void anA(); virtual void aB() = 0; template void serialize(Archive &ar, const unsigned int version) { ar & boost::serialization::base_object(*this); } }; class C : public B { public: C() {}; C(std::string a); virtual ~C(); virtual void aB(); std::string m_string; template void serialize(Archive &ar, const unsigned int version); };