简体   繁体   English

boost :: serialize和std :: chrono :: system_clock :: time_point

[英]boost::serialize and std::chrono::system_clock::time_point

I am trying to serialize a class that contains a std::chrono::system_clock::time_point with boost::serialize. 我试图用boost :: serialize序列化一个包含std :: chrono :: system_clock :: time_point的类。

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

However I get the error: 但是我得到错误:

Error 1 error C2039: 'serialize' : is not a member of 'std::chrono::time_point<_Clock>' c:\\boost_1_54_0\\boost\\serialization\\access.hpp 118 错误1错误C2039:'serialize':不是'std :: chrono :: time_point <_Clock>'的成员c:\\ boost_1_54_0 \\ boost \\ serialization \\ access.hpp 118

How do I fix this? 我该如何解决?

Use 采用

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

from boost/serialization/binary_object.hpp wchich can be used like this: 来自boost/serialization/binary_object.hpp可以像这样使用:

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

I managed to get it to work using the following intrusive function (in the class which has the timepoint_ as a member function) 我设法使用以下侵入函数使其工作(在具有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*/
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 二进制&#39;&gt; =&#39;:&#39;std :: chrono :: system_clock :: time_point&#39; - binary '>=': 'std::chrono::system_clock::time_point' 是 std::atomic <std::optional<std::chrono::time_point<std::chrono::system_clock> &gt;&gt; 有效/安全? </std::optional<std::chrono::time_point<std::chrono::system_clock> - Is std::atomic<std::optional<std::chrono::time_point<std::chrono::system_clock>>> valid/safe? 输出boost :: chrono :: system_clock :: time_point作为相对于UTC的本地时间 - Output boost::chrono::system_clock::time_point as local time with respect to UTC 将std :: chrono :: system_clock :: time_point :: min()转换为字符串时,无效的空指针错误 - Invalid null pointer error when converting std::chrono::system_clock::time_point::min() to string C ++将字符串时间戳转换为std :: chrono :: system_clock :: time_point - C++ Convert a string timestamp to std::chrono::system_clock::time_point 如何正确地将字符串转换为 std::chrono::system_clock::time_point? - How to properly convert string to std::chrono::system_clock::time_point? 从持续时间构造 std::chrono::system_clock::time_point - Constructing std::chrono::system_clock::time_point from a duration 将std :: chrono :: system_clock :: time_point转换为struct timeval并返回 - Convert std::chrono::system_clock::time_point to struct timeval and back 将 C# 日期时间转换为 C++ std::chrono::system_clock::time_point - Convert C# DateTime to C++ std::chrono::system_clock::time_point 如何从std :: chrono :: system_clock :: time_point.time_since_epoch()。count()获取std :: chrono :: system_clock :: time_point? - How to get std::chrono::system_clock::time_point from std::chrono::system_clock::time_point.time_since_epoch().count()?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM