C++オブジェクトをシリアライズする方法を学習しようとしています。 ここでいくつかの記事を読んだら、boost
シリアライゼーション機能を利用し、ロード/セーブ機能を使用してアーカイブするのはいい考えです。しかし、私はブーストライブラリを使用しないでください。フィールドを知らずにC++オブジェクトをシリアライズ
概念的には、フィールドを知らなくてもオブジェクトを保存できますか? C++でのリフレクションがない場合、オブジェクトを格納する唯一の方法は、すべてのクラスメンバーを知ることです。
stringstream
を使用して<<
演算子をオーバーロードしてオブジェクトを文字列に変換すると、オブジェクトを直接保存できますか?概念的に
おかげで、K.
いいえ。リフレクションのない言語では、メンバーが何であるかわからない限りメンバーと何もできません。 –
誰かがフィールドを知っている必要があります。呼び出し元がフィールドを知る必要はなく、読み取りと書き込みの両方に1つの機能があるようにすることができます。シリアライゼーションには、バージョニングなどのような厄介な問題がたくさんあることに注意してください。 – Yakk