I am trying to serialize a vector of polymorphic pointers. My code looks as follows:
class ASTNode{
...
protected:
vector <ASTNode*> children;
string name;
string type;
private:
// Code for serialization
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, unsigned int version)
{
ar & name;
ar & type;
ar & children;
}
}
class ASTNode2: public ASTNode{
...
private:
// Code for serialization
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, unsigned int version)
{
// serialize base class information
ar & boost::serialization::base_object<ASTNode>(*this);
}
// End code for serialization
}
I use the vector "children" to hold pointers to both base and derived objects. I have tried registering the derived classes at the top of the serialize function call, with the use of
ar.register(static_cast<ASTNode*>(NULL)). I have also tried using the BOOST_CLASS_EXPORT_GUID macro to register the classes in main. Yet, I still get a unregistered class exception. Any guidance would be greatly appreciated.