boost::serialization

製作中のゲームのセーブ、ロードをboost::serializationを使って実装中。

  • クラスに余計な記述が増える。
  • メンバを増やすたびに更新しないといけない。

って事で、実装はセーブ、ロードで扱うデータが出揃ってからの方がいい気がしてきた。
コピーコンストラクタを自作したときにありがちな、追加したメンバ変数のコピーをし忘れて原因不明のバグに直面ってのは絶対やる自信があるし。
うーん、ダンジョン内の中断を無しで街に戻ったときだけセーブ可能なら、保存するのは手持ちのアイテムと倉庫の中身だけで良いから楽だけど、そうもいかないしなぁ。

class CItemBase
{
protected:
    SItemEffectPtr mEffect;
    CDrawData mDrawData;
    std::string mName;
    std::string mInfoText;
public:
    ・・・
private:
    friend class boost::serialization::access;
	template<class Archive>
	  void serialize( Archive& ar, unsigned int ver )
	  {
          ar & mEffect;
          ar & mDrawData;
          ar & mName;
          ar & mInfoText;
	  }
};

とりあえずinlineで記述するのやめようかな。でも、そうするとメンバ変数の定義と離れてしまう分なおさら追加した時に忘れそうで怖いんだよなー。