正直、そのやり方はオブジェクト指向の悪い例だと思ってる

モンスターの動きなんて、フィールドやプレイヤーの状態、コンフィグ、その他あらゆる状況で変化するもので
たかが monster.cpp があらゆるヘッダを参照するハメになる
スイッチ1個増えるだけで全コンパイルだ

モンスターとかは構造体に止めといて

for(i=0;i<100;i++)
 if(Config.xxx){
  monster[i].x += 1;
 }
 else{
  monster[i].x += 2;
 }
}

みたいにしないと、依存関係が一瞬で破綻するよ