Używam Boost.Serialization do archiwizowania zawartości klasy. Jedną ze zmiennych składowych jest statyczne std :: vector.Statyczne elementy i serializacja wzmocnienia
Archiwizacja i przywracanie są w porządku, ale miałem nadzieję, że biblioteka uratuje statyczne elementy tylko raz, wydaje się, że, sądząc po pliku, statyczne elementy są w pełni zapisane dla każdej zarchiwizowanej instancji.
Łatwo to obejść, używając set/getters dla wektora statycznego i serializując wektor statyczny poza klasą raz.
Ale wolałbym mieć samodzielną klasę. Czy istnieje prosty i łatwy sposób, aby jednorazowo zarchiwizować statyczną zawartość klasy?
Nie sądzę, że jest tak "pewny", aby być szczerym. Ponieważ instancja statyczna rezyduje pod tym samym adresem pamięci dla każdej instancji klasy, miałem nadzieję, że biblioteka jakoś to odbierze i będzie na tyle mądra, aby nie zapisywać wektora za każdym razem, gdy plik jest zapisywany. – Pieter
Serializowanie wektora, a następnie wszystkich instancji, jest "łatwo ominięte", o którym mówiłem, ponieważ powiedziałem, że wolałbym mieć własną serię() dla mojej klasy ... Ale jeśli to nie może zrobić serializowanie wektora najpierw jest to, co ja też będę trzymać oczywiście (tak to teraz działa ...) – Pieter
To jest na pewno, Boost serializuje to, co mówisz, żeby serializować, bez względu na jego lokalizację pamięci, nie może tak dziko odgadnąć . Gdzie byłaby przechowywana sekcja statyczna, gdyby w jakiś sposób działała magicznie? Na początku, na końcu, w środku? Jednym ze sposobów byłoby użycie flagi takiej jak "serial". – arul