>>823
入力関連をまとめるクラスを作成しましょう。
クラス名(XXXXX)はお好みで変えてください。

class XXXXX {
public:
static bool Init( void ); // 初期化処理を記述する関数
static bool Main( void ); // 毎ループ呼び出される関数
static bool Free( void ); // 終了時処理を記述する関数
};

bool XXXXX::Init( void ){ return true; }
bool XXXXX::Free( void ){ return true; }
bool XXXXX::Main( void ){ return true; }

上記の関数はそれぞれ前述(>>805)のGameSystem系の対応する関数内で呼び出します。
InitとFreeの中身は対称(確保⇔解放)になる事が多いです。
また、Mainはどうしても記述量が多くなります。

なので、Init/Free/Mainの順に記載するとソースの見通しがよくなります。