Сериализация XML с помощью C ++ Boost: как обратиться к базовому классу?

Когда XML сериализует класс с библиотеками Boost, существует момент, когда нам, вероятно, нужно сделать это для производного класса. В этом случае руководство 1 поручает включить ссылку на базовый класс:

BOOST_SERIALIZATION_BASE_OBJECT_NVP(my_base_class)

Однако, если этот класс находится внутри пространства имен, мы должны включить имя класса с, ИЛИ ЖЕ без пространства имен?

Например, базовый класс Высокий :: Foo и производный класс от него Высокий :: Бар.

Вопрос, который мы должны использовать внутри реализации сериализации Bar, какое из следующих утверждений?

  1. BOOST_SERIALIZATION_BASE_OBJECT_NVP(Foo)
  2. BOOST_SERIALIZATION_BASE_OBJECT_NVP(Awesome::Foo)

1

Решение

Из документации Boost я бы сделал вывод, что Случай 1 верен.

Согласно документации, связанной с на повышение сериализации

они заявляют в отношении BOOST_SERIALIZATION_BASE_OBJECT_NVP(my_base_class):

«Обратите внимание, что эти макросы должны использоваться в пространстве имен класса,
и без уточнения пространства имен в аргументе. «

Они также дают пример кода с использованием этого макроса в этот пример ссылки.

2

Другие решения


По вопросам рекламы [email protected]