Я использую Boost.Serialization для архивирования содержимого класса. Одной из переменных-членов является статический std :: vector.статические элементы и сериализация boost
Архивирование и восстановление идет хорошо, но я надеялся, что библиотека сохранит статические члены только один раз, кажется, что, судя по размеру файлов, статические члены полностью сохраняются для каждого архивированного экземпляра.
Это довольно легко обойти с помощью set/getters для статического вектора и сериализации статического вектора вне класса один раз.
Но я предпочел бы иметь самостоятельный класс. Есть ли простой и простой способ для архивирования статического содержимого класса только один раз?
Я не думаю, что это так «конечно», если честно. Поскольку статический экземпляр находится в одном адресе памяти для каждого экземпляра класса, я надеялся, что библиотека каким-то образом его подберет и будет достаточно умна, чтобы каждый раз не писать вектор. – Pieter
Сериализация вектора сначала, а затем все экземпляры, это «легко обойти», о котором я говорил, так как я сказал, что предпочел бы иметь собственный сериализованный() для моего класса ... Но если это не может сделайте сериализацию вектора во-первых, это то, что я буду придерживаться тоже, конечно (вот как это работает сейчас ...) – Pieter
Уверен, Boost сериализует то, что вы говорите, для сериализации, независимо от его местоположения в памяти, он не может этого удивлять , Где бы хранился статический раздел, если это каким-то волшебным образом сработало? В начале, в конце, посередине? Один из способов - использовать флаг «сериализованный». – arul