Boost logo

Boost Users :

Subject: Re: [Boost-users] [Boost.Serialization] Serializing "abstract" classes
From: Robert Ramey (ramey_at_[hidden])
Date: 2011-08-05 14:21:13


Júlio Hoffimann wrote:
> Dear all,
>
>
> I'm using Boost 1.45...
>
>
> I've read Boost.Serialization docs so many times and can't understand
> why my testcase is not working as expected. According to the
> following three links, we need to address serialization of derived
> classes with "abstract" base class by using boost macros:
>
>
> http://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/traits.html#export
>
>
> http://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/special.html#export
>
>
> http://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/traits.html#abstract
>
>
> I did my testcase ( http://codepad.org/6ETp1Ac0 ) completely based on
> the demo:
> http://www.boost.org/doc/libs/1_47_0/libs/serialization/example/demo.cpp

Have you tried to build adn run the demo as it is? Does it work?

Robert Ramey

>
>
> Compiling and running shows that the derived class archive contains
> just the base class data members. What is happening? How can i solve
> this problem?

One obvious problem is that the base class is not abstract. To be abstract,
a base class must have atleast one virtual function in the form

virtual my_function() = 0;

The ASSUME_ABSTRACT macro doesn't mark it abstract to the
compiler - it marks it abstract to the boost type-traites system.
I know it's quirky and unclear - but I see no way to make it bullet proof.

I'm sort of surprised/disappointed that this doesn't give a compile time
warning. What compiler do you use?

Robert Ramey

>
>
> I really appreciate any help,
> Júlio.
>



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