Boost logo

Boost Users :

From: Robert Ramey (ramey_at_[hidden])
Date: 2008-04-08 15:54:21


serializing a pointer to a char is will only serialize one char.

try serializating either an array of characters or an std::string

Robert Ramey

  "Ariel Brunetto" <abrunetto_at_[hidden]> wrote in message news:c1bd22250804081016m1bf9c734s143a08b9a166a2bb_at_mail.gmail.com...
  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 mailing list
  Boost-users_at_[hidden]
  http://lists.boost.org/mailman/listinfo.cgi/boost-users



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