ゲームのデータ(マップやキャラクタのデータなど)の構造変更時に旧ファイルとの互換性を楽にもたせられる方法はありませんか?

例えば
class map_data
{
public:
BYTE chip_x,chip_y;//チップのインデックス
};
というクラスがあり、これをそのままサイズ分ファイルに書き込みます。
このクラスはマップファイル用に使われるので実際はマップの編集作業に大変時間を取られます。

しかし、このクラスに何かの変数を追加する必要が生じまして
class map_data
{
public:
BYTE chip_x,chip_y;//チップのインデックス
char flag[4];//
};
こうなったとすると、クラスのサイズの違いから読み込み位置にズレが生じてしまい、
前回頑張って作ったマップのデータが意味の無いものになってしまいます。
これを回避するために上手い方法は無いでしょうか。
今はファイル読み込み関数を旧式、書き込み関数だけを新しいものにして、
一旦新形式でセーブしてから読み込み関数を新形式にする方法と、
あらかじめchar reserved[1000]という余分なスペースを確保し、
追加分の変数のサイズだけ引いていくという方法でやっていますが面倒です。