Когда XML сериализует класс с библиотеками Boost, существует момент, когда нам, вероятно, нужно сделать это для производного класса. В этом случае руководство 1 поручает включить ссылку на базовый класс:
BOOST_SERIALIZATION_BASE_OBJECT_NVP(my_base_class)
Однако, если этот класс находится внутри пространства имен, мы должны включить имя класса с, ИЛИ ЖЕ без пространства имен?
Например, базовый класс Высокий :: Foo и производный класс от него Высокий :: Бар.
Вопрос, который мы должны использовать внутри реализации сериализации Bar, какое из следующих утверждений?
BOOST_SERIALIZATION_BASE_OBJECT_NVP(Foo)
BOOST_SERIALIZATION_BASE_OBJECT_NVP(Awesome::Foo)
Из документации Boost я бы сделал вывод, что Случай 1 верен.
Согласно документации, связанной с на повышение сериализации
они заявляют в отношении BOOST_SERIALIZATION_BASE_OBJECT_NVP(my_base_class)
:
«Обратите внимание, что эти макросы должны использоваться в пространстве имен класса,
и без уточнения пространства имен в аргументе. «
Они также дают пример кода с использованием этого макроса в этот пример ссылки.