2016-04-20 7 views
0

Ich habe eine Union-like-Klasse implementiert, die aus C++ - Primer-Abschnitt 19.6 gelernt wurde.Könnte ich boost :: serialization-Bibliothek verwenden, um eine unionartige Klasse von C++ zu initialisieren.

Gibt es eine Chance, es zu serialisieren, indem Sie boost :: serialization library verwenden?

+0

Was meinst du mit "union- * like *"? Ist es eine "Gewerkschaft" oder etwas anderes? – user2079303

+0

@ user2079303 Dies ist das [Beispiel] (http://paste.ubuntu.com/15950633/) von C++ Primer. – Christophe

+0

Setzen Sie die Definition der Klasse in die Frage. Es sollte genug sein, nur die Member-Variablen aufzunehmen. Kopieren Sie nicht alles. – user2079303

Antwort

1

Sure:

Live On Coliru

#include <iostream> 
#include <boost/serialization/vector.hpp> 
#include <boost/serialization/variant.hpp> 
#include <boost/serialization/string.hpp> 
#include <boost/archive/text_oarchive.hpp> 

using V = boost::variant<std::string, double, int>; 

int main() 
{ 
    boost::archive::text_oarchive oa(std::cout); 
    oa << std::vector<V> { 3.14, "std::string", 42 }; 
} 

Drucke

22 serialization::archive 14 0 0 3 0 0 0 1 3.14000000000000012e+00 0 11 std::string 2 42 

Verwenden Sie ein binary_archive oder xml_archive. Unterdrücken Sie Header, wenn Sie müssen. Sie können natürlich auch Serializer-Varianten mit benutzerdefinierter Serialisierung deserialisieren und hinzufügen.

Verwandte Themen