
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@gmail.com> 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@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users