Je dois sérialisation libkdtree ++ dans mon programme, les structures d'arbres sont brièvement décrits comme suit:structure arborescente de sérialisation en utilisant boost :: sérialisation
struct _Node_base {
_Node_base * _M_parent, *_M_left, * _M_right;
template<Archive>
serialize(Archive &ar, const unsigned int version) {
ar & _M_left & _M_right;
}
}
template<typename V>
struct _Node : public _Node_base {
typedef V value_type;
value_type value;
template<Archive>
serialize(Archive &ar, const unsigned int version) {
ar.register_type(static_cast<_Node*>(NULL));
ar & boost::serialization::base_object<_Node_base>(*this);
ar & value;
}
}
struct Tree {
_Node * root;
template<Archive>
serialize(Archive &ar, const unsigned int version) {
ar & root;
}
}
Ce rapport du programme « erreur de flux ». Mais à partir du fichier "serailzed", il manque les champs de valeur pour les nœuds enfants des racines. Donc je pense qu'il est possible que BaseNode sérialisé _M_left et _M_right pointeur. Cependant, puisque _Node_base n'a aucune idée du type de valeur de _Node, il semble difficile d'ajouter "ar.register_type" à _Node_base.serialize().
Ce code ne compile pas. 'Node' devrait être sous-classe' BaseNode', 'left' et' right' devrait être ptrs, 'value_type' non déclaré,' serialize' manquer le type de retour, etc etc S'il vous plaît poster un vrai code (qui compile). –