Hi lists,
I'm working with the Serialization library but I'm having some troubles
with it.
The tutorials in the website shown me much but still I need help.
I'm using XML archives.
I have this classes actually (these classes are all
builders/prototypes, they serialize the datas and then they should make
a new object with those datas):
Serializer (an interface, every class
which need serialization must be
derived from this, however this is only a marker, it will be not
serialized)
RenderableSerializer : public Serializer -
this isn't pure virtual
however shouldn't be never serialized directly (since the object made
by this class is a pure virtual one) - These will use the tag <renderable>
SkyboxSerializer : public
RenderableSerializer - these will
use the tag <skybox>
EntitySerializer : public
Serializer - these will use the
tag <entity>
many other classes will be added in future and they'll all derive form
RenderableSerializer.
Now the problem is EntitySerializer have
a pointer to a RenderableSerializer and
when I serialize EntitySerializer the
pointer to that class is considered to be a RenderableSerializer
and not the derived class. I don't know at priori which class is
the base class and this lead to problem.
If I serialize a SkyboxSerializer I have
the correct tag: a <skybox> which
have inside a <renderable> and the
datas are correct.
If I try to serialize an Entity I had a lot of problem, mostly just
make the library crash. As I've seen in the tutorial I should register
all the derived classes before pass the pointer to the Archive. I did
it registering the SkyboxSerializer classes
but it lead to a wrong xml: a correct <entity>
tag which have a correct <skybox>
with all it's data but also a wrong <renderable>
tag which have inside the same data of the tag <skybox>
instead of the data of a RenderableSerializer class.
Now the question is: is there a correct way to use the library this
way? With a pointer to a base class of which the derived is not known?
My code is too big and I made many attempt to use the library so I'm
not posting it in this message. If you need it I will post it.
Thank you for your replies.