Hello,

While using the latest release of boost, I've encountered a few questions concerning the usage of the serialization library with objects without default constructors.

Here they are:

1-) How can we construct an instance of a serialized object that doesn't have a default constructor?

The only option I've figured out is to normally construct an object with bogus values, then unserialize the real values while reading from the archive.  Example:

X(0) val; // 0 being some bogus value.
inputStream >> val; // Overwrites all values within val;

Is this the correct way to do things?

2-) How should we split the serialization between the class' serialize member versus load/save_construct_data?

My observations show that when un/serializing objects directly like shown above, load/save_construct_data aren't needed, so the serialize member has to handle everything.  When serializing a vector<X>, load/save_construct_data does get called, so we have to un/serialize some members in those functions as well.  At first glance, it seems some members will have to be un/serialized for the second time within load/save_construct_data.

Is that correct?  For a class to be correctly un/serializable for all cases, load/save_construct_data must un/serialize members that are already taken care of in the serialize member?

Thanks!

Martin

--
signature Tel: (450) 681-1681, #271

OKIOK

Enterprise and e-business security solutions
Solutions de sécurité d'entreprise et d'affaires électronique

Tel. : (450) 681.1681
http://www.okiok.com

This e-mail message (including attachments, if any) is intended for the use of the individual or entity to which it is addressed and may contain information that is privileged, proprietary, confidential and exempt from disclosure. If you are not the intended recipient, you are notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the sender and erase this e-mail message immediately.
 
Le présent message électronique (y compris les pièces qui y sont annexées, le cas échéant) s'adresse au destinataire indiqué et peut contenir des renseignements de caractère privé ou confidentiel. Si vous n'êtes pas le destinataire de ce document, nous vous signalons qu'il est strictement interdit de le diffuser, de le distribuer ou de le reproduire. Si ce message vous a été transmis par erreur, veuillez en informer l'expéditeur et le supprimer immédiatement.