boost serialization std :: unique_ptr support
Unterstützt die Boost-Serialisierungsbibliothek die Serialisierung von std :: unique_ptr? Ich habe versucht, den folgenden Code zu kompilieren, aber wenn ich dasboost :: archive :: text_oarchive oa (ofs); oa << g; Linie
der Compiler (übrigens gcc4.7 mit -std = c ++ 11 Flag) gibt einen Fehler aus
/ usr / include / boost / serialization / access.hpp: 118: 9: Fehler: "class std :: unique_ptr" hat kein Mitglied mit dem Namen "serialize"
#include <iostream>
#include <memory>
#include <fstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
class MyDegrees
{
public:
void setDeg(int d){deg = d;}
int getDeg()const {return deg;}
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{ ar & deg; }
int deg;
};
class gps_position
{
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{ ar & degrees; }
std::unique_ptr<MyDegrees> degrees;
public:
gps_position(): degrees(std::unique_ptr<MyDegrees>(new MyDegrees)){};
void setDeg(int d){degrees->setDeg(d);}
int getDeg() const {return degrees->getDeg();}
};
int main()
{
std::ofstream ofs("filename");
gps_position g;
g.setDeg(45);
std::cout<<g.getDeg()<<std::endl;
{// compiler error, fine if commented out
boost::archive::text_oarchive oa(ofs); oa << g;
}
return 0;
}