Hi

 

I’m trying to serialize a class using non intrusive templates since I can’t modify the class. The class has proper set/gets but doesn’t expose the data directly so I would need to use the save/load method which requires a macro to be defined in the class but, again, I can’t modify the class. Looking at the code, I tried the following to have the save/load implemented outside but get the following error with MSVC 7.1 (boost version 1.39). Is there any way to accomplish what I’m trying to do here? Thanks

 

Denis

 

 

error C2270: 'save' : modifiers not allowed on nonmember functions

 

 

sample implementation:

 

 

class MyClass

{

public : int GetValue() const;

public : void SetValue(int v);

private: int m_Value;

};

 

 

namespace boost { namespace serialization {

                template <class Archive>

                void save(Archive & ar, MyClass & c, const unsigned int version) const

                {

                                int v = c.GetValue();

                                ar & v;

                }

 

                template <class Archive>

                void load(Archive & ar, MyClass & c, const unsigned int version)

                {

                                int v;

                                ar & v;

                                c.SetValue(v);

                }

 

                template <class Archive>

                void serialize(Archive & ar, MyClass & c, const unsigned int version)

                {

                                boost::serialization::split_member(ar, c, version);

                }

}}

 

CONFIDENTIALITY NOTICE: The contents of this email are confidential
and for the exclusive use of the intended recipient. If you receive this
email in error, please delete it from your system immediately and 
notify us either by email, telephone or fax. You should not copy,
forward, or otherwise disclose the content of the email.