gpt4 book ai didi

c++ - 使用 boost::serialization 序列化一个成员为 vector> 的类

转载 作者:行者123 更新时间:2023-11-28 04:11:45 24 4
gpt4 key购买 nike

有一个类似的sounding question ,但它是完全不同的,因为它涉及序列化类的 unique_ptr 的 vector 。我想要一种方法来序列化作为 vector 的成员。

What I have tried and does not work:

#include<vector>
#include<string>
#include<sstream>
#include<iostream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/unique_ptr.hpp>
#include <boost/serialization/shared_ptr.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/forward_list.hpp>
#include <boost/serialization/serialization.hpp>
using namespace boost::archive;
class Person {
std::vector<std::unique_ptr<std::string>> data_;
public:
Person(){
data_.emplace_back(nullptr);
data_.emplace_back(new std::string("Bjarne!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"));
}
private:
friend class boost::serialization::access;
template <typename Archive>
void serialize(Archive &ar,const unsigned int)
{
ar & data_;
}
public:
const std::vector<std::unique_ptr<std::string>>& data() const{
return data_;
}

};

int main() {
std::stringstream ss;
Person p;
text_oarchive oa{ss};
oa << p;
text_iarchive ia{ss};
Person read;
ia >> read;
for (const auto& ptr : read.data()) {
std::cout << *ptr;
}
}

最佳答案

正如@CuriouslyRecurringThoughts 评论的那样,当您想序列化时,请避免使用 std::unique_ptr 标记无值,请使用 boost::optional而不是 serialize .

关于c++ - 使用 boost::serialization 序列化一个成员为 vector<unique_ptr<string>> 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57624481/

24 4 0
文章推荐: html - Div 在 HTML/CSS 表格中的用法?
文章推荐: javascript - 将代码文本解码为 ASCII 失败
文章推荐: html - 创建一个具有多个边框的 css 徽章
文章推荐: html -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com