Sto utilizzando Boost.Serialization per archiviare il contenuto di una classe. Una delle variabili membro è uno statico std :: vector.membri statici e serializzazione potenziata
L'archiviazione e il ripristino vanno bene, ma speravo che la libreria salvi i membri statici una volta sola, sembra che, a giudicare dal file, i membri statici siano completamente salvati per ogni istanza archiviata.
Questo è piuttosto facilmente aggirato utilizzando set/getter per il vettore statico e serializzando il vettore statico al di fuori della classe una volta.
Ma preferirei avere una classe autonoma. C'è un modo semplice e pulito per ottenere l'archiviazione dei contenuti statici di una classe solo una volta?
Non penso che sia così "sicuro" ad essere onesti. Dal momento che l'istanza statica risiede nello stesso indirizzo di memoria per ogni istanza di classe, speravo che la libreria lo riprendesse in qualche modo e fosse abbastanza intelligente da non scrivere il vettore ogni volta per archiviare. – Pieter
Inizializzare prima il vettore, e poi tutte le istanze, è il "facilmente aggirato" di cui stavo parlando, come ho detto preferirei un serialize autonomo() per la mia classe ... Ma se questo non può essere fatto serializzare il vettore prima è quello che rimarrò anche io ovviamente (è così che funziona ora ...) – Pieter
Certo, Boost serializza quello che dici di serializzare, indipendentemente dalla sua posizione di memoria, non può . Dove sarebbe memorizzata la sezione statica, se in qualche modo funzionasse magicamente? All'inizio, alla fine, nel mezzo? Un modo sarebbe usare un flag come "serializzato". – arul