'struct std::pair<int, int>' has no member named 'serialisieren'
Ich versuche zu integrieren Serialisierung in meinem code. Allerdings bekomme ich die a 'has no member named' - Fehler. Das Buch lese ich, sagt, dass std::pair braucht keine header-Datei enthalten und existiert nicht . Wie um diesen Fehler zu beheben?
Mein code wie folgt Aussehen:
#include <iostream>
//ofstream/ifstream
#include <fstream>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
//stringstream
#include <sstream>
//
#include <boost/serialization/complex.hpp>
#include <boost/serialization/bitset.hpp>
//#include <boost/serialization/
//BOOST_BINARY
#include <boost/utility/binary.hpp>
using namespace std;
int main()
{
complex<double> c(1,0);
bitset<3> b(BOOST_BINARY(101));
pair<int,int> p(1,2);
string s;
std::stringstream ss(s);
boost::archive::text_oarchive oa(ss);
oa<<c<<b<<p;
{
complex<double> c;
bitset<3> b;
pair<int,int> p;
boost::archive::text_iarchive ia(ss);
ia>>c>>b>>p;
}
return 0;
}
std::pair
definiert ist, in<utility>
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
#include <boost/serialization/utility.hpp>
zu aktivierenstd::pair
Serialisierung.Warum sollte
std::pair
bieten eineserialize
Funktion? Der standard sagt nie, dass. Es ist auch falsch zu sagen, es braucht keine header-Datei: es erfordert <utility> wirklich. Es ist jedoch wahrscheinlich bereits durch einen anderen header-Datei, die Sie verwenden.Können Sie Ihren eigenen
serialize
Funktion. Boost bietet bereits Beispiele. In Ihrem Fall, müssen Sie den folgenden code vormain
.Durch die Art und Weise, sehe ich nicht die Notwendigkeit der Verwendung
string s
im code. Sie können entfernen Sie diese Zeile und benutzen Sie einfach:<boost/serialization/utility.hpp>
, keine Notwendigkeit, ein eigenes zu schreiben.make_nvp
.