emplace_back()について
Posted: 2018年8月05日(日) 17:30
初めまして。最近c++を学び始めた者です。
https://dixq.net/rp2/15.html
こちらのページについて質問です。
ここでemplace_back()が使われていますが、まずemplace_back()にはそのリストの型(std::shared_ptr<Enemy>)のコンストラクタ引数を渡すものという理解であっていますか?
また、そうだとしたら、make_shared<Enemy>(Define::CENTER_X, 100)はstd::shared_ptr<Enemy>のオブジェクトを戻り値として返すため、emplace_back()に渡すものがコンストラクタ引数ではなくオブジェクトになってしまうため、これはemplace_back()ではなくpush_back()なのではないかと思ってしまいます。
どなたか私がどこが間違っているのかの指摘をお願いいたします。
https://dixq.net/rp2/15.html
こちらのページについて質問です。
//EnemyManager.h
class EnemyManager : public Task
{
private:
std::list<std::shared_ptr<Enemy>> _list;
};
//EnemyManager.cpp
EnemyManager::EnemyManager()
{
_list.emplace_back(make_shared<Enemy>(Define::CENTER_X, 100));
}
また、そうだとしたら、make_shared<Enemy>(Define::CENTER_X, 100)はstd::shared_ptr<Enemy>のオブジェクトを戻り値として返すため、emplace_back()に渡すものがコンストラクタ引数ではなくオブジェクトになってしまうため、これはemplace_back()ではなくpush_back()なのではないかと思ってしまいます。
どなたか私がどこが間違っているのかの指摘をお願いいたします。