2017-02-12 3 views
0

Ist es möglich, std::chrono::duration oder speziell std::chrono::milliseconds mit boost::serialization zu serialisieren?Wie man std :: chrono :: duration mit Boost serialisiert?

Folgender Fehler ist aufgetreten:

"struct std :: Chrono :: Dauer> 'kein Mitglied hat den Namen' serialisiert"

Ich brauche das für meine Vorlage-Klasse:

#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) 

ich folgendes Objekt bin erstellen:

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

Antwort

0

Sagen wir, Sie haben:

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); 

// hier int64_t serialisiert.

dann nach der Deserialisierung, Sie haben:

std::chrono::duration<int64_t, std::milli> duration(aLotOfMilliseconds); 
Verwandte Themen