
Hi Kangkook, By removing the pointer in const string*, the code compiles. You have to investigate how Boost.Serialization handles pointers to stdlib classes: http://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/index.html I never tried to serialize a string* nor any pointer to a stdlib class before. Although i know it's possible to use pointers for base classes polymorphically. Serializing a string* shouldn't be a problem, i guess. Regards, Júlio. 2011/9/20 Kangkook Jee <aixer77@gmail.com>
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; }