OK - after changing some #include < to include "... I managed to compile all the modules - including ClassSpecification_serialization.cc - with the following compilers: VC 7.1, gcc 3.4, Comeau, Borland 5.64 and Borland 5.51 I compiled against my more recent version which may be different than the one you are using - I presume you're using 1.33? I did find a minor problem with gcc in some code I recently added but it is not related to this issue. So I can't reproduce your exact problem. I might give some hints though. The current system needs an extended_type_info implementation. This is specified by including a header - either extended_type_info_typeid.hpp or extended_type_info_no_rtti - which was just an example but I guess its been found to be useful now. If neither of these is expliclty #included, the system will #include extended_type_info_typeid.hpp and mark it as the "default". Its possible that in some of your files you're including "...no-rtti.pp" while in others nothing has been specified so that "..._typeid.hpp" is being included. As a test you might try including "..._no_rtti.hpp" above any serialization or archive headers. and see if that makes a difference. Robert Ramey RIVASSEAU Jean Noel wrote:
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@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] De la part de Robert Ramey Envoyé : jeudi 2 mars 2006 18:06 À : boost-users@lists.boost.org 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@oberthurcs.com> wrote in message news:87F60F7FA02FF749AFB02BD9FCAA6B04DA7ABF@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@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users