Boost logo

Boost Users :

From: Ariel Brunetto (abrunetto_at_[hidden])
Date: 2008-04-08 13:16:23


Hello!

My name is Ariel and this is my first time with boost. I spent a few days
looking arround the serialization library, and right now I have a project
with my first serialized classes.
I spent some time reading the documentation and the tutorial. I am having
problems serializing pointers. I am trying to serialize a const char* and it
seems that doesn't work in the trivial way.

This is my code:

//-----------------------------------------------------------------------------
// myserializeclass.h
//-----------------------------------------------------------------------------
#include <fstream>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/serialization/base_object.hpp>
//-----------------------------------------------------------------------------
class MySerializeClass
{
private:
 friend class boost::serialization::access;
 template<class Archive>
 void serialize(Archive & ar, const unsigned int uiVersion)
 {
  ar & m_pChar;
 }
// members to serialize
public:
 char* m_pChar;
};
//-----------------------------------------------------------------------------
BOOST_CLASS_TRACKING(MySerializeAbstractBase,
::boost::serialization::track_never)
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// myserializeclass.cpp
//-----------------------------------------------------------------------------
int main()
{
 MySerializeClass MySerializeClassObject;

 std::ofstream ofs(akFilename);
 boost::archive::binary_oarchive oa(ofs);

 oa << MySerializeClassObject;
 return 0;
}
//-----------------------------------------------------------------------------

It doesn't compile. I get the following error:

1>c:\program files\microsoft visual studio
8\vc\platformsdk\include\boost\serialization\access.hpp(109) : error C2228:
left of '.serialize' must have class/struct/union

I know that this is my mistake, but I don't know how to fix it ;). I know
that there is a lot of consideration about pointer serialization. Could you
point me in the right direction?

Thanks in advance!
Ariel



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