我试图对攻击向量进行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();
}
}
}
型
4条答案
按热度按时间nhn9ugyo1#
对于下面的示例,假设您使用C++11。基于范围的for循环示例:
字符串
您应该根据
makeDamage()
的行为使用const auto &attack
。你可以使用标准库中的
std::for_each
+ lambdas:型
如果你不习惯使用
std::for_each
,你可以使用迭代器循环m_attack
:型
使用
m_attack.cbegin()
和m_attack.cend()
得到const
迭代器。oaxa6hgo2#
这是在C++中循环的方式(11):
字符串
C++中没有
for each
。另一种选择是使用std::for_each和一个合适的函子(可以是任何可以用Attack*
作为参数调用的东西)。7cjasjjr3#
for each
语法在Visual Studio中作为原生c++的扩展受到支持。msdn中提供的示例
字符串
(在VS 2013中工作)不是可移植的/跨平台的,但给你一个如何使用
for each
的想法。标准的替代方案(在其余的答案中提供)适用于任何地方。最好使用它们。
cfh9epnr4#
C在其语法中没有
for_each
循环功能。你必须使用c11或使用模板函数std::for_each
。字符串