J'essaie de construire une structure arborescente pour organiser un test composé d'une série de questions.Structure de l'arborescence de Sérialisation de Boost
L'idée est que test, question, QuestionPart seraient tous dérivent de la classe suivante:
class Node
{
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & boost::serialization::make_nvp("children", m_children);
ar & boost::serialization::make_nvp("intro", m_intro);
}
public:
Node(){};
virtual ~Node(){};
virtual void addChildNode(Node* _child);
virtual const std::string getIntro() const;
virtual Node* getChild(const _index) const;
virtual void setIntro(std::string _intro);
protected:
std::vector<Node*> m_children;
std::string m_intro;
};
Avant de faire toutes les autres classes j'ai essayé les éléments suivants:
void saveTest(const Node &test, const char* filename)
{
// make an archive
std::ofstream ofs(filename);
boost::archive::xml_oarchive oa(ofs);
oa << BOOST_SERIALIZATION_NVP(test);
}
void createTest()
{
Node* test = new Node();
Node* question1 = new Node();
question1->setIntro("Question 1");
test->addChildNode(question1);
test->setIntro("Test");
saveTest(*test, fileLocation.c_str());
}
Mais ceci est lançant une exception et créant uniquement ce qui suit:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="10">
<test class_id="0" tracking_level="1" version="0" object_id="_0">
<children class_id_reference="0" object_id="_1">
<children</boost_serialization>
Je serais très apprécié.
Avez-vous envisagé d'utiliser boost property_tree? – ppl
Je l'ai vu mentionné et jetterai un coup d'oeil, merci pour votre suggestion. – henryprescott