LoginSignup
0
0

More than 3 years have passed since last update.

学生はよくやりがちかも? 似たような処理はテンプレートできるかも!

Last updated at Posted at 2019-10-18

似たような処理を連続して書いてませんか?

こんばんは。脳死状態で(言い訳)でプログラムをしていたら
『おい、それってよ!テンプレートできるやんか』と言われたので
同じことをしている人はおすすめです。

自分は長く読むのが嫌いなのでざっくり教えます

何をしていたのか

オブジェクト作ってプシュッバックしています
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回していたら 関数化、テンプレートなど!
まとめれるか一度考えてみよう!

0
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0