Я должен сериализовать libkdtree ++ в моей программе, древовидные структуры кратко описана следующим образом: отчетыСериализации с использованием подталкивания :: сериализаций
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;
}
}
Этой программы «ошибка потока». Но из «файла serailzed» в нем отсутствуют поля значений для дочерних узлов корней. Таким образом, я думаю, что возможно, что BaseNode сериализует _M_left и _M_right указатель. Однако, поскольку _Node_base понятия не имеет о типе значения _Node, поэтому сложно добавить «ar.register_type» в _Node_base.serialize().
Этот код не компилируется. 'Node' должен быть подклассом' BaseNode', 'left' и' right' должен быть ptrs, 'value_type' undeclared,' serialize' missing return type и т. Д. И т. Д. Пожалуйста, разместите некоторый настоящий код (который компилируется). –