С++ 11 std:: shared_ptr + boost:: serialization

Привет, кому-то уже удалось сериализовать С++ 11 std:: shared_ptr с boost:: serialization. Там много устаревших сообщений, но нет приемлемого решения. Я не буду обсуждать, почему я хочу использовать std:: shared_ptr, просто примите его!

Я нашел этот другой пост: повысить сериализацию и std:: shared_ptr, но он не отвечает на мою проблему, как сериализовать std:: shared_ptr, это только предполагает использование boost:: shared_ptr, что невозможно в моем случае.

И этот пост Как использовать boost:: serialization для std:: shared_ptr из С++ 11? также рекомендуется использовать boost:: shared_ptr.

Мне было бы интересно, если кто-нибудь уже нашел работу, которая управляет сериализацией std:: shared_ptr.

Эй, ребята, я, наконец, нашел решение своей проблемы, см. qaru.site/info/245959/... для моего ответа.

Ответ 1

Невозможно ли "просто" создать сериализатор < < и десериализатор → , который "просто" превратит сериализацию shptr в сериализацию указателя объекта? Если еще не сделано, я почти уверен, что это возможно в < 100 строк кода.

Кроме того, я знаю, что вы указали не спрашивать, но все же я буду: когда вы пытаетесь сериализовать переменную "X", которая является shptr, почему вы не можете просто сериализовать разыменованные * shptr? Это не кажется достаточной разницей для меня, чтобы беспокоиться о добавлении сериализации для smartptrs. Хм.. хорошо. эстетику. Но все же я думаю, что это выполнимо.

В любом случае, вы можете попасть в другую стену: если вы используете наследование классов и если вы переносите объекты в shptr с помощью указателя на базовый класс, у вас будет очевидная проблема, что сериализатор будет не знаю, что на самом деле упорядочено для сериализации. Но это классическая проблема для сериализации без RTTI, что, ну, вы хотите как-то решить, но это не проблема shptrs.

отказ от ответственности: последний раз, когда я использовал boost:: serialization, было несколько лет назад. Я на самом деле не пытался сериализовать shptr, но из того, что я помню, это была довольно открытая структура, относительно легко расширяемая для любого настраиваемого типа, поэтому я предполагаю, что shptrs не лучше, чем мои странные классы, to-serialize:)