フレームマネージャ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);
というように使うのが一般的なんでしょうけど。