簡體   English   中英

如何使用boost :: serialization將帶有對象向量的對象序列化為屬性

[英]How to serialize object with vector of objects as attribute using boost::serialization

我正在嘗試創建對象庫,其中包含來自不同類的對象的屬性矢量。 這是我的代碼:

    #include <iostream>
    #include <string>
    #include <vector>
    #include <fstream>
    #include <boost/archive/binary_oarchive.hpp>
    #include <boost/archive/binary_iarchive.hpp>

    using namespace std;

    class form_mesto
    {
    public:
        string mesto;
        int year;
        int mounth;
        int day;
        bool visit = false;
        form_mesto(string a_mesto)
        {
            mesto = a_mesto;
        }
    };

    class Place
    {
    private:
        friend class boost::serialization::access;
        template<class Archieve>
        void serialize(Archieve&ar, const unsigned int version)
        {
            ar& mestа;
            ar& person;
        }
    public:
        string person;
        vector<form_mesto> mestа;

        Place(string a_person)
        {
            person = a_person;
        }

        void add_place(form_mesto a_mesto)
        {
            mestа.push_back(a_mesto);
        }
    };

int main()
{
    string input_in_form = "London";
    string input_in_Place = "Eugene";
    form_mesto z = form_mesto(input_in_form);
    Place x = Place(input_in_Place);
    x.add_place(z);
    std::ofstream ofs("save.dat", std::ios::binary);
    boost::archive::binary_oarchive oa(ofs);
    oa<<x;
};

錯誤,我得到的是:

c:\\ boost_1_57_0 \\ boost \\ serialization \\ access.hpp(118):錯誤C2039:serialize:不是“ std :: vector>”的成員。

有人可以分享如何序列化此類對象的經驗嗎?

要使代碼可編譯,必須執行以下操作:

  1. 包括負責向量序列化的頭

     #include <boost/serialization/vector.hpp> 
  2. serialize方法添加到form_mesto

     class form_mesto { private: friend class boost::serialization::access; template<class Archieve> void serialize(Archieve&ar, const unsigned int version) { // ... } // ... }; 

是可編譯的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM