
Jeff Garland a écrit :
Loïc Joly wrote:
Oliver Mutz a écrit :
Loïc Joly wrote:
Nat Goodspeed a écrit :
I haven't yet worked with a serialization framework smart enough to consider constructor arguments. (I haven't yet worked with the Boost Serialization library, either; forgive me if this is already a solved problem.)
Boost::serialization requires a constructor with no arguments.
That's not right I'm afraid. See the "Non-Default Constructors" part of the serialization library documentation for details.
This pertains to deserializing pointers to instances of classes with no default constructor. Is does not mean anything concerning deserialization of instances. Those need to be constructed before being deserialized to.
Oliver is correct -- serialization does not require default constructors for the types. It does require a constructed object prior to reading in the data.
Yes, you are right. My mistake. What I meant is that for deserialisation, you still have a two phases construction: First, build your object with any mean available (if your object have only constructors with non-default parameters, this will probably imply building them with dummy parameters), then, in a second phase, override the member values by the serialized version. In my C++ code, when I use uninitialized or "dummy-initialized" object, this is most of the time because I'm going to read a stream into the object, or deserialize the object. -- Loïc