![](/img/trans.png)
[英]How to serialize/deserialize with boost std::vector of boost::unordered_map
[英]How to boost::serialize an std/boost::optional?
如何序列boost::serialization
包含boost::optional
的類(使用boost::serialization
)?
即,以下代碼在實例化時將給出錯誤。
錯誤C2039:'serialize':不是'boost :: optional'的成員C:\\ boost \\ boost_1_55_0 \\ boost \\ serialization \\ access.hpp 118
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
class MyClass {
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & my_member;
}
boost::optional<int> my_member;
};
int main() {
std::ofstream ofs("filename.txt");
const MyClass g;
boost::archive::text_oarchive oa(ofs);
oa << g;
return 0;
}
我知道可能存在一個更深層次的問題(當值不存在時,你應該寫什么文件?),但必須有一些標准的解決方案。 我正在尋找解決這個問題的最簡單方法。
對於boost::optional
您只需要添加#include <boost/serialization/optional.hpp>
它實現了一個非成員序列化函數,允許您序列化boost::optional
而不必擔心細節。
它首先保存/加載t.is_initialized()
的布爾值,並根據其值決定是否保存/加載其余值。
您可以在此處查看源代碼: http : //www.boost.org/doc/libs/1_56_0/boost/serialization/optional.hpp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.