[英]Convert tm structure to boost::local_time::local_date_time
[英]In Boost serialization, boost::local_time::local_date_time gives error
我正在嘗試序列化MyData,但boost :: local_time :: local_date_time給出了錯誤: “錯誤1錯誤C2512:'boost :: local_time :: local_date_time_base <>':沒有適當的默認構造函數可用”
下面是代碼:
// MyData.hpp文件
struct MyData
{
std::string id;
std::string name;
boost::local_time::local_date_time time;
private:
friend class boost::serialization::access;
template
void serialize(Archive &ar, const unsigned int version)
{
ar & id;
ar & name;
ar & time; // when i comment this line, error goes off
}
public:
MyData(void);
MyData(const parameter_strings & parms);
virtual ~MyData(void);
};
}
// MyData.cpp file
MyData::MyData(void)
{
}
MyData::~MyData(void)
{
}
MyData::MyData(const parameter_strings & parms)
{
// implementation aprt
}
BOOST_CLASS_EXPORT_IMPLEMENT(MyData); BOOST_CLASS_IMPLEMENTATION(MyData,boost :: serialization :: object_serializable); BOOST_CLASS_TRACKING(MyData,boost :: serialization :: track_selectively);
請為這個主題提供幫助,投入更多時間,但到目前為止沒有任何用處。
我可以使用posix日期時間獲取當前日期和時間嗎? 或我需要在哪里打電話給建設者約會。
謝謝
文檔狀態 :
boost :: date_time庫與boost :: serialization庫的文本和xml存檔兼容。 可序列化的類的列表為:
boost::gregoriandate
date_duration
,date_period
,partial_date
,nth_day_of_week_in_month
,first_day_of_week_in_month
last_day_of_week_in_month
,first_day_of_week_before
,first_day_of_week_after
greg_month
,greg_day
,greg_weekday
boost::posix_time
ptime
,time_duration
,time_period
所以,是的。 但是您應該使用ptime
而不是local_date_time。
現在,首先,編譯器抱怨它不知道如何初始化time
成員(因為它沒有默認構造函數)。 這與序列化無關:
struct Oops
{
boost::local_time::local_date_time time;
Oops() { }
};
已經有相同的問題。 修理它:
struct FixedOops
{
boost::local_time::local_date_time time;
FixedOops() : time(boost::local_time::not_a_date_time)
{
}
};
現在,要序列化:
#include <boost/archive/text_oarchive.hpp>
#include <boost/date_time/posix_time/time_serialize.hpp>
#include <boost/date_time/local_time/local_time.hpp>
struct parameter_strings {};
struct MyData
{
std::string id;
std::string name;
boost::posix_time::ptime time;
private:
friend class boost::serialization::access;
template <typename Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & id;
ar & name;
ar & time; // when i comment this line, error goes off
}
public:
MyData() : time(boost::posix_time::not_a_date_time) { }
MyData(parameter_strings const&) : time(boost::posix_time::not_a_date_time) { }
virtual ~MyData() { };
};
int main()
{
boost::archive::text_oarchive oa(std::cout);
MyData data;
oa << data;
}
所以那是
ptime
posix_time
的序列化頭。 程序打印:
22 serialization::archive 10 0 0 0 0 0 0 0 0 15 not-a-date-time
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.