Per quanto ho capito, non esiste alcuna serializzazione (boost::serialization
, in realtà) supporto per segnaposto boost::any
.C++ - boost :: qualsiasi serializzazione
Qualcuno sa se esiste un modo per serializzare un'entità personalizzata boost::any
?
Il problema qui è ovvio: boost::any
utilizza segnaposto basati su modello per memorizzare oggetti e typeid
per verificare se boost::any_cast
è appropriato.
Quindi, c'è un astratti personalizzato classi derivate basate su template superclasse placeholder
e personalizzati, che vengono creati nel seguente modo:
template <T> custom_placeholder : public placeholder {
virtual std::type_info type() const { return typeid(T); }
virtual ...
};
Ovviamente, questo porta qualche problema quando nemmeno pensarci serializzazione questa roba. Forse qualcuno conosce qualche trucco per realizzare un tale tipo di serializzazione (e, naturalmente, una deserializzazione appropriata)?
Grazie
Un tipo specializzato per un set noto di tipi si chiamerebbe una variante come ad es. ['boost :: variant'] (http://www.boost.org/doc/libs/1_44_0/doc/html/variant.html) (che ovviamente fornisce solo le basi). –
@Georg: Sì, grazie per il suggerimento. Ho modificato la risposta per riflettere questo. –