#実現したいこと
C++超初心者です。表題の通りネストした構造体をシリアライズしてjsonファイルに出力したく下記のようなコードを書いたのですが、自力ではエラーを解決できそうにありません。
誠に未熟な質問で恐縮ですが、エラーを解消し期待する出力結果を得るにはどうコードを修正すればよいか、どなたかご教授お願いします。
#ソースコード
C++
1#include <iostream> 2#include <vector> 3#include <fstream> 4#include <map> 5#include <cereal/types/map.hpp> 6#include <cereal/types/string.hpp> 7#include <cereal/archives/json.hpp> 8 9struct Fuga //構造体(子) 10{ 11 12 std::string str; 13 std::vector<float> vec; 14 15 template<class Archive> 16 void serialize(Archive& ar) 17 { 18 ar(CEREAL_NVP(str), CEREAL_NVP(vec)); 19 } 20 21}; 22 23struct Hoge //構造体(親) 24{ 25 int id; 26 struct Fuga fuga; 27 28 template<class Archive> 29 void serialize(Archive& ar) 30 { 31 ar(CEREAL_NVP(id), CEREAL_NVP(fuga)); 32 } 33 34}; 35 36int main() 37{ 38 Hoge hoge; 39 hoge.id = 1; 40 hoge.fuga.str = "hogehoge"; 41 hoge.fuga.vec = {0.2, 0.3, 0.5}; 42 43 //シリアライズして出力 44 std::ofstream os("out.json", std::ios::out); 45 cereal::JSONOutputArchive archiveFile(os); 46 hoge.serialize(archiveFile); 47 48} 49 50 51
#期待する出力結果
json
1{ 2 "id": 1, 3 "fuga": { 4 "str": "hogehoge", 5 "vec": [ 0.2, 0.3, 0.5 ] 6 } 7} 8
#エラーメッセージ
cereal could not find any output serialization functions for the provided type and archive combination.
#動作環境、ライブラリ
・Windows10 Pro
・Visual Studio Community 2019
・cereal (シリアライズ用ライブラリ)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/09 12:11
2020/11/09 14:49
2020/11/10 01:08