我正在尝试对攻击向量进行 foreach,每次攻击都有一个 唯一的 ID ,例如 1-3。
类方法接受1-3的键盘输入。
我正在尝试使用 foreach 来遍历我在 m_attack 中的元素,以查看数字是否匹配,如果匹配…做点什么。
我看到的问题是这样的:
a'for each' statement cannot operate on an expression of type "std::vector<Attack
我是否完全错了,我有 C# 经验并且是我所基于的,任何帮助将不胜感激。
我的代码如下:
在标题中
vector<Attack> m_attack;
在班上
int Player::useAttack (int input)
{
for each (Attack* attack in m_attack) // Problem part
{
//Psuedo for following action
if (attack->m_num == input)
{
//For the found attack, do it's damage
attack->makeDamage();
}
}
}
原文由 Springfox 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于下一个示例,假设您使用 C++11。基于范围的 for 循环示例:
您应该使用
const auto &attack
取决于makeDamage()
的行为。您可以使用标准库 + lambdas 中的
std::for_each
:如果您对使用
std::for_each
感到不舒服,您可以使用迭代器循环m_attack
:使用
m_attack.cbegin()
和m_attack.cend()
得到const
迭代器。