#似たような処理を連続して書いてませんか?#
こんばんは。脳死状態で(言い訳)でプログラムをしていたら
『おい、それってよ!テンプレートできるやんか』と言われたので
同じことをしている人はおすすめです。
自分は長く読むのが嫌いなのでざっくり教えます
##何をしていたのか
オブジェクト作ってプシュッバックしています
auto e = std::make_shared<Enemy>();
e->Init();
Objects.push_back(e);
auto p = std::make_shared<Player>();
p->Init();
Objects.push_back(p);
auto b = std::make_shared<Bullet>();
b->Init();
Objects.push_back(b);
うん!めちゃんこ同じことをしているね!
##テンプレートでまとめる
今回はテンプレートを使います
まず宣言
template <class T>
処理内容を書くよ!
/*その型で宣言しようね!*/
std::shared_ptr<T> CreateObject()
{
auto object = std::make_shared<T>();
object->Init();
Objects.push_back(object);
return object;
}
なんとなくわかるかな?名前の通りこれをテンプレとします。
ゲームでもテンプレPTと言うよね
##早速使用してみよう!
####使用前
before
auto e = std::make_shared<Enemy>();
e->Init();
Objects.push_back(e);
auto p = std::make_shared<Player>();
p->Init();
Objects.push_back(p);
auto b = std::make_shared<Bullet>();
b->Init();
Objects.push_back(b);
####使用後
after
CreateObject<Enemy>();
CreateObject<Player>();
CreateObject<Bullet>();
####三行で終わるんですね!可読性も上がります!
##まとめ
同じことを3回していたら 関数化、テンプレートなど!
まとめれるか一度考えてみよう!