$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [Boost-users] [Serialization]Serialization of nested stl object
From: Kangkook Jee (aixer77_at_[hidden])
Date: 2011-09-20 17:35:03
The following is the code snippet that wouldn't get compiled. 
#include <iostream>
#include <fstream>
#include <map>
#include <string>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/set.hpp>
#include <boost/serialization/string.hpp>
using namespace std;
class B {
  //private attributes
  map<const string* , set<unsigned> > lines;
  
  //serialization
  friend class boost::serialization::access;
  template<class Archive> 
  void serialize (Archive & ar, const unsigned int version) {
    ar & lines;
  }
public:
  B() {}
};
main (int argc, char* argv[]) {
  string fname(argv[1]);
  B b0;
  std::ofstream ofs (fname.c_str());
  boost::archive::text_oarchive oa(ofs);
  oa << b0;
  ofs.close();
  
  std::ifstream ifs(fname.c_str());
  boost::archive::text_iarchive ia(ifs);
  ia >> b0;
  ifs.close();
  
  return 0;
}
On Sep 20, 2011, at 5:02 PM, Júlio Hoffimann wrote:
> Hi Kangkook,
> 
> For all stdlib classes Boost.Serialization can deal with, there is a proper header to include. Are you including all necessary ones?
> 
> Please make a test case and show us. Also, is really a const string* in your snippet?
> 
> Regards,
> Júlio.
> 
> 2011/9/20 Kangkook Jee <aixer77_at_[hidden]>
> Hi, all
> 
> A member of a target class, where one STL object (map) includes another (set), prevent the code from being built properly
> and the  error message urges me to implement *serialize* method for pair<string*, set<unsigned>>.
> 
> What is the typical way of implementing serialization using boost for this kind of data structures?
> 
> * Code snippet
> 
> class B {
>        
>        map<const string*, set<unsigned> > lines;
>        ..
>          template<class Archive>
>  void serialize (Archive & ar, const unsigned int version) {
>        ar & lines;
>        
> 
> 
> * Build error message
> 
> /opt/local/include/boost/serialization/access.hpp:118: error: class std::map<const std::string*, std::set<unsigned int, std::less<unsigned int>, std::allocator<unsigned int> >, std::less<const std::string*>, std::allocator<std::pair<const std::string* const, std::set<unsigned int, std::less<unsigned int>, std::allocator<unsigned int> > > > > has no member named serialize
> 
> Thanks for your help in advance,
> 
> /Kangkook
> 
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://listarchives.boost.org/mailman/listinfo.cgi/boost-users
> 
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://listarchives.boost.org/mailman/listinfo.cgi/boost-users