You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Boost 1.65.1环境下直接序列化boost::array编译失败如何解决

直接序列化boost::array失败的原因

你使用的Boost 1.65.1版本中,boost::array的序列化适配逻辑没有集成在<boost/array.hpp>头文件里,而是单独抽离到了<boost/serialization/boost_array.hpp>头文件中。原代码没有引入这个序列化适配头,Boost序列化框架无法找到boost::array对应的序列化实现,才会抛出「类没有serialize成员」的编译错误。

其他解决方案

除了用boost::serialization::make_array包装外,最简便的方案就是在原代码中补充引入对应的序列化头文件,不需要修改原有序列化逻辑:

// 新增这一行头文件引入即可
#include <boost/serialization/boost_array.hpp>

修改后的完整可运行代码如下:

#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/array.hpp>
// 补充引入boost::array的序列化适配头
#include <boost/serialization/boost_array.hpp>
#include <iostream>
#include <sstream>

using namespace boost::archive;

std::stringstream ss;

void save()
{
  text_oarchive oa{ss};
  boost::array<int, 3> a{{0, 1, 2}};
  oa << a;
}

void load()
{
  text_iarchive ia{ss};
  boost::array<int, 3> a;
  ia >> a;
  std::cout << a[0] << ", " << a[1] << ", " << a[2] << '\n';
}

int main()
{
  save();
  load();
}

这个方案可以保留原有的直接序列化boost::array对象的写法,不需要做其他逻辑修改。


内容的提问来源于stack exchange,提问作者Sev7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:18:03