Siehe unten eine main () und zwei sehr einfache Klassen. Dann pro Boost Serialisierung (und was gezeigt wird) meine Fragen sind:
1) Benötigt Klasse B die normal überladenen Stream-Insertion-Operatoren '& lt; & lt;' und "& gt; & gt;" zu definieren? Derzeit in meinem echten Code hat es diese nicht.
2) Muss Klasse A in den store () - und load () - Methoden die Map- und Multimap-Container explizit durchlaufen und ihre Schlüssel: Wert-Paare explizit speichern / laden? z.B. etwas wie:
%Vor%Ich gehe davon aus, dass ich das nicht tun muss, bin mir aber nicht sicher.
3) Angenommen, in Klasse B sind nur die beiden Datenelemente enthalten. Ist ein expliziter Standardkonstruktor erforderlich? (im Gegensatz zum impliziten Standardkonstruktor)
4) Muss B eine Überdeckung für den Vergleichsoperator '& gt;' haben? Ich gehe davon aus, dass dies nicht eine sehr einfache Klasse ist.
Endlich, alle anderen Kommentare zu etwas, das ich nicht zu erfassen vermochte, werden geschätzt!
Beispielcode für meine obigen Fragen:
%Vor% 1) Sie benötigen keine Stream-Operatoren für Klasse B, aber sie benötigen eine serialize () -Methode. Ich musste die Serialisierung mit dem Makro BOOST_SERIALIZATION_NVP
(Name-Wert-Paar) umbrechen:
Es könnte sein, dass Sie Ihre Map nicht benennen können, aber ich weiß nicht, wie das geht.
2) Nein, Klasse A benötigt keinen kartenspezifischen Serialisierungscode. Stellen Sie nur sicher, dass Sie <boost/serialization/map.hpp>
einfügen.
3) Der implizite Standardkonstruktor sollte in Ordnung sein. Sie brauchen immer nur einen expliziten Standardkonstruktor, wenn Sie a) einen nicht standardkonstruierten Konstruktor zur Verfügung gestellt haben oder b) das Verhalten des Standardkonstruktors ändern wollen.
4) Kein Operator & lt; wird benötigt:)
Hier ist ein Beispielcode, der kompiliert wurde, aber ich habe nicht ausgeführt:
%Vor%Tags und Links c++ serialization map boost