2017-02-12 126 views
0

是否可以序列化std::chrono::duration或特别是std::chrono::millisecondsboost::serialization?发生如何使用Boost序列化std :: chrono :: duration?

以下错误:

“结构的std ::时辰::持续时间> '没有名为成员' 连载”

我需要为我的模板类:

#include <iostream> 
#include <chrono> 
#include <boost/serialization/serialization.hpp> 

template<typename T> 
class Field { 
public: 

// Default Constructor 
Field() {} 

Field(std::string name, T value) : 
     mName(name), mValue(value) {} 

~Field() {} 

const std::string& getName() const { 
    return mName; 
} 

T getValue() const { 
    return mValue; 
} 

private: 

friend class boost::serialization::access; 
template<typename Archive> 
void serialize(Archive& archive, const unsigned int) { 
    archive & boost::serialization::make_nvp("Name", mName); 
    archive & boost::serialization::make_nvp("Value", mValue); 
} 

std::string mName; 
T mValue; 
}; 

BOOST_CLASS_IMPLEMENTATION(Field<int>, boost::serialization::object_serializable) 
BOOST_CLASS_IMPLEMENTATION(Field<std::chrono::milliseconds>, boost::serialization::object_serializable) 

我创建下列对象:

Field<std::chrono::milliseconds> mSimTime; 

回答

0

比方说,你有:

auto earlier = std::chrono::system_clock::now(); 
auto now = std::chrono::system_clock::now(); 
auto aLotOfMilliseconds= std::chrono::duration_cast<std::chrono::milliseconds>(
     now - earlier); 

//序列化的int64_t这里。

然后反序列化后,您有:

std::chrono::duration<int64_t, std::milli> duration(aLotOfMilliseconds); 
相关问题