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.
Was meinst du mit "union- * like *"? Ist es eine "Gewerkschaft" oder etwas anderes? – user2079303
@ user2079303 Dies ist das [Beispiel] (http://paste.ubuntu.com/15950633/) von C++ Primer. – Christophe
Setzen Sie die Definition der Klasse in die Frage. Es sollte genug sein, nur die Member-Variablen aufzunehmen. Kopieren Sie nicht alles. – user2079303