Boost logo

Boost :

Subject: Re: [boost] [boost.Serialization V1.42.0] Question aboutBOOST_SERIALIZATION_SPLIT_FREE and non-public members
From: gmkdroid (gmkdroid_at_[hidden])
Date: 2010-08-09 21:43:51


On Fri, Aug 6, 2010 at 6:40 PM, Robert Ramey <ramey_at_[hidden]> wrote:

> gmkdroid wrote:
> > Hello,
> >
> > I'm trying to add Boost serialization to a class which has private
> > data members. I'm using the "non-intrusive" free save/load split
> > method. I've added "friend class boost::serialization::access;" to
> > my class, but I still receive a "cannot access private member..."
> > compiler error. How can I give the load/save functions friend access
> > to my class?
>
> I'm not aware of any problem in this area. If you want to make a
> small example, we'll take a look at it.
>
> Robert,

Here's an example of the issue I'm having:

*MyObject.h*

//////////////////////////////////////////////////////////////////////////////////////
#include <boost/serialization/access.hpp>
class CMyObject
{
public:
    friend class boost::serialization::access;
    CMyObject(void) : m_nPrivateData(123) { }
    ~CMyObject(void) { }
private:
    int m_nPrivateData;
};

*Serializer_MyObject.h*
//////////////////////////////////////////////////////////////////////////////////////
#include "MyObject.h"
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/serialization/split_free.hpp>

BOOST_SERIALIZATION_SPLIT_FREE(CMyObject)

namespace boost { namespace serialization {
template<class Archive>
void save(Archive & ar, const CMyObject& t, unsigned int version)
{
    ar << boost::serialization::make_nvp("CMyObject", t.m_nPrivateData);
}

template<class Archive>
void load(Archive & ar, CMyObject& t, unsigned int version)
{
    ar >> boost::serialization::make_nvp("CMyObject", t.m_nPrivateData);
}

}} // boost and serialization namespaces

The program compiles fine if m_nPrivateData is made public, but fails if its
private. Is there something else I should be using instead of
boost::serialization::access?

Thanks,

Glen

_______________________________________________
Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk