フレームマネージャ4 | 雨弓のゲーム製作ブログ

フレームマネージャ4

今まではフレームオブジェクトの登録に

MyGame *m=new MyGame;

GetFrameManagerWins()->RegistFrameData(m);

としていたのですが、テンプレートを使って

GetFrameManagerWins()->RegistFrameDataMakeInstance<MyGame>();

とすると登録できるようにしました。

処理としては

template <typename T> bool RegistFrameDataMakeInstance(void){

T *dt=new T;

return RegistFrameData(dt);

}

っていうだけなのですが、deleteはフレームマネージャが勝手に行う仕様だったので、今までは

「RegistFrameDataメソッドの引数はnewで生成したものでなければならない。また、newは自分でやらなければならないのにdeleteはしてはいけない。」

という分かりづらい仕様だったのが、この方法にしたことで分かりやすくなりました。


テンプレートって意外なところで役立ちますね・・・。

本来は

template <typename T> T max(T a,T b){

return ((a>b)?a:b);

}

int i=max(20,10);

double d=max(1.0,5.1);

というように使うのが一般的なんでしょうけど。