Возможно ли, чтобы сериализация XML использовала более человечный класс class_id как GUID, описанный с использованием BOOST_CLASS_EXPORT_GUID
???class_id в boost :: archive :: xml_oarchive
Рассмотрим сериализацию класс:
SomeClass* b=new SomeClass("c");
{
boost::archive::xml_oarchive oa(cout);
oa.register_type<SomeClass>();
oa << boost::serialization::make_nvp("b",b);
}
выход будет как:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="5">
<b class_id="0" tracking_level="1" version="0" object_id="_0">
<name>c</name>
</b>
</boost_serialization>
При удалении class_id = "0" это не десериализации. Я бы предпочел class_id = «SomeClass» или что-то подобное.
Это отличная идея написать warper over pointer, сохранить имя класса и разыменованный указатель (2 дополнительных nvp) и сериализовать с помощью подсказки boost :: serialization :: object_serializable (удалить class_id). Но когда вы переходите на binnary_oarchive, вам нужно сериализовать имя класса, а не целое. – Arpegius
«нужно реализовать свой собственный класс архива», спасибо, вот что я хочу знать. В настоящее время я выбираю YAML ++, это хорошо подходит для этой задачи. – Arpegius