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.