Estoy usando Boost.Serialization para archivar el contenido de una clase. Una de las variables miembro es un std :: vector estático.miembros estáticos y aumentar la serialización
Archivar y restaurar va bien, pero esperaba que la biblioteca guardara miembros estáticos solo una vez, parece que, a juzgar por el tamaño del archivo, los miembros estáticos se guardan completamente para cada instancia archivada.
Esto se elude fácilmente utilizando set/getters para el vector estático y serializando el vector estático fuera de la clase una vez.
Pero prefiero tener una clase independiente. ¿Existe una manera limpia y fácil de lograr archivar los contenidos estáticos de una clase solo una vez?
No creo que sea tan "seguro" para ser honesto. Dado que la instancia estática reside en la misma dirección de memoria para cada instancia de clase, esperaba que la biblioteca captara eso de alguna manera y fuera lo suficientemente inteligente como para no escribir el vector cada vez que archivara. – Pieter
Serializar primero el vector, y luego todas las instancias, es el 'fácil eludir' al que me refería, ya que dije que preferiría tener una serialización independiente() para mi clase ... Pero si eso no puede Ser hecho serializar el vector primero es lo que voy a pegar también por supuesto (así es como funciona ahora ...) – Pieter
Es seguro, Boost serializa lo que le dices a serializar, independientemente de su ubicación de memoria, no puede adivinar eso salvajemente . ¿Dónde estaría la sección estática almacenada, si de alguna manera funcionara mágicamente? Al principio, al final, en el medio? Una forma sería usar una bandera como 'serializada'. – arul