Boost logo

Boost Users :

From: RIVASSEAU Jean Noel (JN.RIVASSEAU_at_[hidden])
Date: 2006-03-03 03:47:25


Sorry, I removed the QString stuff, so it should make more sense to you now. I have attached the cleaned up code. If you try to compile it, it will fail on the file

ClassSpecification_serialization.cc

with a message saying that there is a problem with the extended_type_info of std::vector< MemberVariableSpecification *> (since a member of ClassSpecification, which I serialize, is of this type).

Don't pay attention as to what are my real intentions on this example code, this comes from my real project, and it would be long to explain. Just let's say that, no, I am not trying to store class id information into the archive, it is just that one data member of one of object that I need to serialize has the name class_id (but it could be named "walnut_field", the code would be the same).

This small example code is just there to show you the bug that occurs.

As for the mixing of type systems (no_rtti and type_id), it was just a test to see if that would change things. I have reverted it back in the attached code (only no_rtti used) but it still does not work.

Thank you

Jean-Noël

-----Message d'origine-----
De : boost-users-bounces_at_[hidden] [mailto:boost-users-bounces_at_[hidden]] De la part de Robert Ramey
Envoyé : jeudi 2 mars 2006 18:06
À : boost-users_at_[hidden]
Objet : Re: [Boost-users] serialization: again a problem,failing to serialize a std::vector of pointers

I took a look at this and it made no sense to me.

I couldn't compile it as it needed a file QString to compile.

I did have occasion to look into the code and Its not obvious to me what
your intention here.

It looks like you're trying to store class id information into the archive
so that the proper
class can be reconstructed. But that can't be it as the serialization
library already does that.

Also I notice that you're using extended_type_info_typeid as well as
extended_type_info_no_rtti.
This is very odd to me as I would expect that one's environment either has
rtti enable or it doesn't.
so I would expect either one or the other but not both.

Anyway, sorrty I couldn't be more help.

Robert Ramey

"RIVASSEAU Jean Noel" <JN.RIVASSEAU_at_[hidden]> wrote in message
news:87F60F7FA02FF749AFB02BD9FCAA6B04DA7ABF_at_naserv31.nanterre.oberthurcs.com...
Hello

This is my last problem with the BSL but the most important one (because
there is no workaround).

I am trying to serialize a class (whose name is "ClassSpecification") which
has a std::vector of pointers. The code for serializing the class the
pointer refer to (MemberVariableSpecification) is written and instantiated
correctly. However I cannot correctly serialize the std::vector. It fails
with a message complaining about:

C:/Boost/include/boost-1_33_1/boost/archive/detail/iserializer.hpp:115:
error: incomplete type
`boost::serialization::extended_type_info_null<std::vector<MemberVariableSpecification*,
std::allocator<MemberVariableSpecification*> > >' used in nested name
specifier

I do not understand why I need an extended_type_info for this vector. I sure
need it for the class the pointers refer to (and I did specify it), but the
std::vector itself is serialized as such, not as a pointer. Why do I get
this error ???

Can you please check the attached code and help me?

Thanks

Jean-Noël

Ps: using gcc 3.4.2

_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users




Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net