9

現在、プロジェクトでboost::uuids::uuidを使用しており、boost::uuids::uuidを含むオブジェクトをシリアライズしたいと考えています。以下の簡単な例を試しましたが、エラーが発生しました。

/usr/include/boost/archive/basic_text_oprimitive.hpp:92: エラー: '((boost::archive::basic_text_oprimitive >*)this)->boost::archive::basic_text_oprimitive の 'operator<<' に一致しません>::os << t'

誰かが私を助けてくれたら本当に感謝します。

#include <fstream>
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_serialize.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>

class classA {
public:
    classA() : id(boost::uuids::random_generator()()) {}
private:
    friend class boost::serialization::access;
    boost::uuids::uuid id;
    template <class Archive>
    void serialize(Archive& ar, const unsigned int version) {
        ar & id;
    }
};

int main(void) {
    classA a;
    std::ofstream ofs("uuid.txt");
    boost::archive::text_oarchive oa(ofs);
    oa << a;
    ofs.close();
    return 0;
}
4

1 に答える 1

4

uuid<boost/uuid/uuid_serialize.hpp>のシリアル化を有効にするために含めます。 http://www.boost.org/doc/libs/1_42_0/libs/uuid/uuid.html#boost/uuid/uuid_serialize.hpp

于 2014-12-28T18:59:25.497 に答える