STLコンテナとセーブ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
入門者

STLコンテナとセーブ

#1

投稿記事 by 入門者 » 13年前

std::string や std::vector などは内部にポインタを含むクラスであるため
バイナリファイルとして書き出してもロードする時にうまくいかないということは分かったのですが、

RPGなどでセーブすべき情報が膨大な場合、キャラクターなどのクラスのメンバに vector や string を
一切使わないで記述するのがツライのですが、何か定石のようなものがあるのでしょうか?
項目ごとに地道に書き出す、あるいは vector などを使う部分だけ分離して他のクラスにする、
といった方法が思いつくのですが、もっと良い方法があるのでしょうか?

アバター
うしお
記事: 56
登録日時: 14年前

Re: STLコンテナとセーブ

#2

投稿記事 by うしお » 13年前

こういったものを利用してみる、というのは選択肢の一つとしていかがでしょうか?
boost::serialization
http://www.kmonos.net/alang/boost/class ... ation.html

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: STLコンテナとセーブ

#3

投稿記事 by softya(ソフト屋) » 13年前

内部情報を吐き出すとバランス調整中のバージョンアップや配布後のバグ対処の時に困ると思うので、出来るだけセーブデータは抽象的な情報に変換した方が良いと思います。
テーブルはユニークな番号化する。アイテム名は出さずにこれもユニークな番号化する。など工夫されたほうが良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

質問者

Re: STLコンテナとセーブ

#4

投稿記事 by 質問者 » 13年前

>> うしお 様
  こういうのもあるんですね。これを機に boost を少し勉強してみようと思います。

>> softya(ソフト屋) 様
  言われてみれば確かにちょっとでも仕様が変わったらセーブデータが使えなくなりそうですね。
 バイナリだと一見楽ですが、そういう問題があるのは盲点でした。

 お二方とも、貴重な意見をどうもありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る