【发布时间】:2021-03-14 06:55:42
【问题描述】:
我正在尝试序列化一个包含 boost::container::string 的类
#include <iostream>
#include <cstdlib>
#include <boost/container/string.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/string.hpp>
class car
{
public:
car() {}
car(boost::container::string make) : make(make) {}
boost::container::string make;
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & make;
}
};
int main()
{
car my_car("ford");
std::stringstream ss;
boost::archive::text_oarchive oa(ss);
oa << my_car;
car new_car;
boost::archive::text_iarchive ia(ss);
ia >> new_car;
}
但以上编译失败,报以下错误:
boost/serialization/access.hpp:116:11: error: 'class boost::container::basic_string<char>' has no member named 'serialize'
可以将相同的代码更改为使用std::string,并且可以正常编译。
boost::container::strings 可以序列化吗?如果可以,我做错了什么或遗漏了什么?
【问题讨论】:
标签: c++ boost boost-serialization