Как переопределить то, что происходит, когда boost :: serialize получает указатель на объект - PullRequest
0 голосов
/ 07 августа 2011

Эй, я понимаю, что boost сериализует указатели автоматически, если вы определили функцию сериализации для объекта, на который он указывает, но

что мне делать, если я хочу написать функцию сериализации наддува, которая принимает myClass pointer?

Я не хочу, чтобы надстройка выполняла действие по умолчанию, сохраняя объект, на который указывает указатель, и затем восстанавливая указатель, указывающий на это. Я хочу, чтобы буст сделал что-то другое.

1 Ответ

1 голос
/ 07 августа 2011

Если вам нужно поведение, отличное от обычной сериализации указателя для вашего специального класса, у вас есть две опции:

Может быть, вы можете настроить методы serialize () всех структур / классов, которые содержат ваш myClassуказатель для достижения желаемого поведения.Однако, если у вас много таких указателей, это не вариант.Другая возможность может заключаться в использовании свободной функции, как описано в http://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/index.html (записано для указателя myClass).

Другая опция работает, только если вы используете не более одного типа архива (например,бинарный архив).Вы можете извлечь из архивных классов и добавить перегрузку для метода save (и load соответственно).

...