【发布时间】:2015-07-01 11:22:54
【问题描述】:
我有自己的类,其中包含以下数据:
#include <boost/date_time/posix_time/time_serialize.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
using namespace boost::archive;
class Foo {
// [...]
unsigned int m_length;
std::vector<boost::posix_time::ptime> m_vecTimestamps;
std::vector<double> m_vecA;
std::vector<double> m_vecB;
std::vector<Point2d> m_vecPos;
由于我包含了适当的标头,我什至可以序列化 ptime:
// Still class Foo
private:
friend class boost::serialization::access;
template <typename Archive>
void serialize(Archive &ar, const unsigned int version) {
ar & m_length;
ar & m_vecTimestamps;
ar & m_vecA;
ar & m_vecB;
ar & m_vecPos; // ooops, error
}
好吧,没有办法序列化 Point2d,因为这个类是由另一个第三方库提供的(只包含 2 个双精度值)。那么我有什么选择来编写一个可以在 Foo::serialize 中使用的包装器呢?我也想轻松地读写那个向量。一个简单的例子就好了。
我尝试查看 time_serialize.hpp 但我不明白如何为 Point2d 分别编写类似的方法,以及其他无法自行修改的类类型?
【问题讨论】:
标签: c++ serialization boost