【问题标题】:boost::serialize and std::chrono::system_clock::time_pointboost::serialize 和 std::chrono::system_clock::time_point
【发布时间】:2013-12-05 22:32:27
【问题描述】:

我正在尝试使用 boost::serialize 序列化一个包含 std::chrono::system_clock::time_point 的类。

template <class Archive> void serialize(Archive& ar, unsigned int version) {
    ar & timePoint_;
}

但是我得到了错误:

错误 1 ​​错误 C2039: 'serialize' : is not a member of 'std::chrono::time_point<_clock>' c:\boost_1_54_0\boost\serialization\access.hpp 118

我该如何解决这个问题?

【问题讨论】:

    标签: c++ serialization boost c++11


    【解决方案1】:

    使用

    boost::serialization::make_binary_object(void * t, size_t size);

    来自 boost/serialization/binary_object.hpp wchich 可以这样使用:

    std::chrono::system_clock::time_point tp;
    ar & boost::serialization::make_binary_object(&tp, sizeof(tp));
    

    【讨论】:

      【解决方案2】:

      我设法使用以下侵入性函数使其工作(在具有 timepoint_ 作为成员函数的类中)

      template <class Archive> void serialize(Archive& ar, unsigned int version) {
          char * ptr = reinterpret_cast<char *>(&timePoint_);
          for( int i = 0; i < sizeof(timePoint_); ++i)
              ar & ptr[i];
          /*snip*/
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-02
        • 2018-07-27
        相关资源
        最近更新 更多