C ++ Boost errore serializzazione ptr_map
-
13-09-2019 - |
Domanda
Ho qualche codice che voglio costruire. Il codice utilizza classe boost :: ptr_map per serializzare determinati oggetti. Ho Visual Studio 2008 con boost1.38 e sto ottenendo seguente errore dal compilatore. Mi chiedo se qualcuno altro ha visto una cosa del genere.
C2039: 'serialize': non è un membro di 'boost :: ptr_map'
appare come qualche riferimento manca e mi chiedo che cosa è, non vedo alcun boost / serializzazione / ptr_map. Ho Googled un sacco e nulla ha dimostrato di essere valida. Ho creato un codice di esempio che genera lo stesso errore seguente
#include <fstream>
#include <iostream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/config.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/ptr_container/ptr_map.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/split_member.hpp>
using namespace std;
class User
{
boost::ptr_map<std::string, string> ptrmap;
public:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & ptrmap;
}
bool save(const std::string& filename)
{
ofstream ofs(filename.c_str());
if(ofs.good() == false)
{
return false;
}
try
{
boost::archive::text_oarchive oa(ofs);
oa << (*this);
}
catch(...)
{
throw;
}
return true;
}
};
int main()
{
User user;
user.save("C:\\test.db");
return EXIT_SUCCESS;
}
Ogni aiuto è apprezzato.
Soluzione
Sembra che ci sia un boost/ptr_container/serialize_ptr_map.hpp
, che è probabilmente importante per #include.
Altri suggerimenti
Forse c'è solo che non è il supporto per la serializzazione boost :: ptr_map? Le librerie Boost non sono collegati completamente in questo modo. Prova a chiedere sulla lista spinta-mail.
Tuttavia, scrivendo una funzione per la serializzazione di un ptr_map dovrebbe essere abbastanza facile.