-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::listC++ 中的 s 没有索引访问运算符。如果您经常需要索引访问,您可能需要一个std::vector。对于在列表中的每个对象上调用方法的用例,请使用如下简单循环:

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

此外,您的使用emplace_back没有意义(它甚至不应该编译,但显然 MSVC++ 有一个 nonconforming emplace_back(T&&))。用于push_back将您类型的现有对象添加到列表或向量中。

于 2013-03-03T14:20:43.447 回答