#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