【发布时间】:2014-11-23 22:35:45
【问题描述】:
我有以下模板类:
#include <map>
#include <boost/array.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/serialization.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/multiprecision/gmp.hpp>
template <class T>
class A {
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & a;
}
public:
T a;
};
我用来创建地图的。
map<A<boost::array<int,2> >, int> mmm;
我可以使用 boost 提供的头文件来序列化/反序列化这段代码:
ifstream ifs("filename");
boost::archive::text_iarchive iarch(ifs);
boost::serialization::load<boost::archive::text_iarchive,int,A<boost::array<int,2> > >(iarch,mmm,1);
问题:我想在数组中使用boost::multiprecision::mpq_rational 而不是int。但是,我收到一个很长的错误,主要抱怨是 gmp_backend 没有序列化方法:
....
/usr/local/include/boost/serialization/access.hpp:118:9: error: ‘struct boost::multiprecision::backends::gmp_rational’ has no member named ‘serialize’
t.serialize(ar, file_version);
^
使用 boost/serialization/map.hpp 和 mpq_rational 有一个简单的解决方法吗? 谢谢,
【问题讨论】:
-
事实上,您应该将问题简化为 /just/ ask how to serialize
mpq_rational,因为其余的对于您的问题(或解决方案)并不重要
标签: c++ serialization boost map