Hello, I have been using the Boost Serialization libraries on a project of mine and so far they have worked very well. However, I have been unable to properly load derived objects using a base class pointer. The following code generates an unregistered class exception: #include <iostream> #include <sstream> #include <iomanip> #include <string> #include <sstream> #include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> #include <boost/serialization/export.hpp> class Base_Class { public: friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { // empty } virtual void print()=0; }; class Derived_Class: public Base_Class { public: int i1; int i2; int i3; friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ar & boost::serialization::base_object<Base_Class>(*this); ar & i1; ar & i2; ar & i3; } void print(){ std::cout << "i am a derived class object" << std::endl; } }; BOOST_CLASS_EXPORT(Derived_Class) /***************************************** Main *****************************************/ int main() { Derived_Class derived_send; derived_send.i1=12; derived_send.i2=13; derived_send.i3=14; Base_Class * base_ptr; Derived_Class * derived_recv; // save derived class std::ostringstream output_stream; boost::archive::text_oarchive output_archive( output_stream ); output_archive & derived_send; // load using base class ptr std::istringstream input_stream( output_stream.str() ); boost::archive::text_iarchive input_archive( input_stream ); input_archive & base_ptr; derived_recv = (Derived_Class*) base_ptr; derived_recv->print(); } From reading the documentation, it seems as if this should work fine. Am I missing something? Thanks in advance, Jason -- Jason Gorski Research Engineer Oasis Advanced Engineering, Inc. (248)373-9800 x 269 gorski@OasisAdvancedEngineering.com