配列のシリアライズ
Posted: 2013年10月18日(金) 21:52
こんばんは、いつもお世話になっております。
現在自分の作っているゲームのセーブロードのためシリアライザを作っています。
boost::Serializationを使うことも考えたのですが、あそこまで大掛かりなものを必要としないため自作しています。
今のところ、intやdouble等のPOD型(?)をシリアライズ、デシリアライズするところまで来ました。
しかし、配列をシリアライズしようとするところでいい方法が思いつかず詰まっております。
上のコードのように、テンプレートを使っているのですが配列を引数に取ると当たり前なのですがただのポインタをなってしまいます。
そこで配列の場合は別に、引数にサイズをとるような関数を作ればいいのでは?と思ったのですが、二次元配列などだとお手上げになってしまいそうです。
何か良い方法はないでしょうか?
現在自分の作っているゲームのセーブロードのためシリアライザを作っています。
boost::Serializationを使うことも考えたのですが、あそこまで大掛かりなものを必要としないため自作しています。
今のところ、intやdouble等のPOD型(?)をシリアライズ、デシリアライズするところまで来ました。
しかし、配列をシリアライズしようとするところでいい方法が思いつかず詰まっております。
template<typename T>
void load(iostream stream, T &obj){
stream->read((char*)(&obj), sizeof(obj));
}
template<typename T>
void load(iostream stream, T *obj){
stream->read((char*)(obj), sizeof(*obj));
}
そこで配列の場合は別に、引数にサイズをとるような関数を作ればいいのでは?と思ったのですが、二次元配列などだとお手上げになってしまいそうです。
何か良い方法はないでしょうか?