スレチかもしれないけどゲームの設計で
1.キャラクター共通のデータを持つ定数クラス(最大HPとか経験値テーブルとか)
↓基礎パラメータに固有パラメータを加減算する(ポケモンでいう努力値)
2.そのキャラクター固有のパラメータを持つクラス(Lvとかフィジカルボーナスとか)

3.実際に動くキャラクタークラス(当たり判定とかダメージ処理がある)

って感じで分けてるんだけど、合ってる(問題ない)?

3を作成する時に、if文連打でインスタンス作るクラスを線形探索する必要があるから・・・

class one_character_record{
const int CHARACTER_ID;
const int HP,MP,SP;
//レベルが上がるに連れてHPMPSPをかけてく
const float HP_RATE,MP_RATE,SP_RATE;

//コンストラクタで初期化
};
class one_character_datebase{
vector<one_character_record> character_list;
};

class two_character_info{
int character_id;
int level;

three_character_entity create_character(){
ここでif連打してクラスを線形探索してしまう
}
};