2016-07-21 12 views
0

ich eine einfache Klasse mit einer ungeordneten Karte und einer serialize Funktion haben:steigern sagt unordered_map Serialisierung ‚serialize‘ fehlt auch mit entsprechenden enthält

#include <boost/unordered_map.hpp> 
#include <boost/serialization/unordered_map.hpp> 

class to_serialize { 
    boost::unordered_map<int, int> m_map; 
public: 
    friend class boost::serialization::access; 
    template<class Archive> 
    void serialize(Archive & ar, const unsigned int) { 
    ar & m_map; 
    } 
}; 

Jetzt versuche ich, ein ts-Objekt zu erstellen und serialisiert es:

#include <fstream> 
#include <boost/archive/binary_iarchive.hpp> 
#include <boost/archive/binary_oarchive.hpp> 
#include "ts.cpp" 

int main() { 
    to_serialize ts; 
    std::ofstream ofs("saved.bin"); 
    { 
    boost::archive::binary_oarchive oa(ofs); 
    oa << ts; 
    } 
    ofs.close(); 
} 

Dies nicht kompilieren, mit:

boost/serialization/access.hpp:116:9: error: 'class boost::unordered::unordered_map<int, int>' has no member named 'serialize' 

ich verstehe nicht, was ich bin fehlt Hier? Die Boost/Serialisierung/unordered_map.hpp scheint die Serialisierungsfunktion für die ungeordnete Karte zu deklarieren und zu definieren, aber ich denke, das ist nicht genug?

Antwort

0

Es sieht so aus, als ob die Antwort einfach ist - boost implementiert die Serialisierung der STL unordered_map, aber nicht ihre eigene boost :: unordered_map Version :(.