-4

オブジェクトをリストに格納します。彼らのメソッドにアクセスしたいのですが、その方法がわかりません。C# では、次のように記述する必要があります。

for (i = 0; i < myList.count(); i++)
myList[i].update();

ただし、C++ は機能しません。

list<Bullet> bullets;

bullets.emplace_back(t_bulletPlayer);

for (i = 0; i < bullets.size(); i++)
{
   bullets[i].update();
}

手伝って頂けますか?

4

1 に答える 1

3

std::list■C++には、インデックス付きアクセス演算子がありません。インデックス付きアクセスが頻繁に必要な場合は、std::vector代わりに必要になる可能性があります。リスト内のすべてのオブジェクトでメソッドを呼び出すユースケースでは、次のような単純なループを使用します。

for (auto b : bullets)
  b.update();

また、を使用emplace_backしても意味がありません(コンパイルすらすべきではありませんが、MSVC ++には不適合があるようemplace_back(T&&)です)。push_backタイプの既存のオブジェクトをリストまたはベクトルに追加するために使用します。

于 2013-03-03T14:20:43.447 に答える