gpt4 book ai didi

c++ - Boost反序列化错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:05 25 4
gpt4 key购买 nike

我正在尝试序列化/反序列化一个简单的对象。我能够序列化它:

#include <vector>
#include <sstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/vector.hpp>


class DataClass{
public:
std::vector<std::string> data;

DataClass(){}
~DataClass(){}

friend class boost::serialization::access;
template<typename Archive>
void serialize(Archive & ar, const unsigned int version) const{
ar & data;
}
};

int main(){
using std::cout;
using std::endl;
using std::string;

DataClass data_obj;
data_obj.data.push_back("some data 1");
data_obj.data.push_back("some data 2");

std::ostringstream archive_stream;
boost::archive::text_oarchive archive(archive_stream);
archive << data_obj;
string str_data_to_send = archive_stream.str();
const char* data_to_send = archive_stream.str().c_str();


std::istringstream archive_stream2(data_to_send);

boost::archive::text_iarchive archive2(archive_stream2);
DataClass received_data_obj;
//archive2 >> received_data_obj;

}

如果我取消注释最后一条语句,我会收到错误消息

archive2 >> received_data_obj;

In file included from /opt/local/include/boost/archive/text_oarchive.hpp:31:
In file included from /opt/local/include/boost/archive/basic_text_oarchive.hpp:32:
In file included from /opt/local/include/boost/archive/detail/common_oarchive.hpp:22:
In file included from /opt/local/include/boost/archive/detail/interface_oarchive.hpp:23:
In file included from /opt/local/include/boost/archive/detail/oserializer.hpp:67:
/opt/local/include/boost/archive/detail/check.hpp:162:5: error: static_assert failed "typex::value"
BOOST_STATIC_ASSERT(typex::value);
^ ~~~~~~~~~~~~

我无法发布整个错误消息,因为我的帖子将“主要是代码”。

最佳答案

转到源代码,出现静态断言的地方,您会看到解释问题的注释:

// cannot load data into a "const" object unless it's a
// wrapper around some other non-const object.

发生这种情况是因为您将serialization成员函数定义为const,所以data成员在被调用时也是constserialization 函数中访问。

关于c++ - Boost反序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24601931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com