std::string や std::vector などは内部にポインタを含むクラスであるため
バイナリファイルとして書き出してもロードする時にうまくいかないということは分かったのですが、
RPGなどでセーブすべき情報が膨大な場合、キャラクターなどのクラスのメンバに vector や string を
一切使わないで記述するのがツライのですが、何か定石のようなものがあるのでしょうか?
項目ごとに地道に書き出す、あるいは vector などを使う部分だけ分離して他のクラスにする、
といった方法が思いつくのですが、もっと良い方法があるのでしょうか?
STLコンテナとセーブ
Re: STLコンテナとセーブ
こういったものを利用してみる、というのは選択肢の一つとしていかがでしょうか?
boost::serialization
http://www.kmonos.net/alang/boost/class ... ation.html
boost::serialization
http://www.kmonos.net/alang/boost/class ... ation.html
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: STLコンテナとセーブ
内部情報を吐き出すとバランス調整中のバージョンアップや配布後のバグ対処の時に困ると思うので、出来るだけセーブデータは抽象的な情報に変換した方が良いと思います。
テーブルはユニークな番号化する。アイテム名は出さずにこれもユニークな番号化する。など工夫されたほうが良いと思います。
テーブルはユニークな番号化する。アイテム名は出さずにこれもユニークな番号化する。など工夫されたほうが良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: STLコンテナとセーブ
>> うしお 様
こういうのもあるんですね。これを機に boost を少し勉強してみようと思います。
>> softya(ソフト屋) 様
言われてみれば確かにちょっとでも仕様が変わったらセーブデータが使えなくなりそうですね。
バイナリだと一見楽ですが、そういう問題があるのは盲点でした。
お二方とも、貴重な意見をどうもありがとうございました!
こういうのもあるんですね。これを機に boost を少し勉強してみようと思います。
>> softya(ソフト屋) 様
言われてみれば確かにちょっとでも仕様が変わったらセーブデータが使えなくなりそうですね。
バイナリだと一見楽ですが、そういう問題があるのは盲点でした。
お二方とも、貴重な意見をどうもありがとうございました!