我正在尝试构建我的开源游戏,但在尝试构建时不断收到此错误。我一直在寻找最后半小时没有任何工作,这是错误指向的代码
void duel::restore_assumes() {
for(auto pcard : assumes)
pcard->assume_type = 0;
assumes.clear();
}
,错误是
错误1错误C2143:语法错误:之前缺少',' ':'c:\ users \ user \ desktop \ project source \ ocgcore \ duel.cpp 108 1 ocgcore (Visual Studio 2010)
答案 0 :(得分:3)
如下表所示:C++11 Compiler Support
基于范围的循环不适用于MSVC2010,但适用于MSVC2012(版本11)。 因此,如果您使用2010编译器,则此代码将无法编译。
错误消息非常明显:编译器不期望for语句中有:
。
答案 1 :(得分:3)
MS VC ++ 2010不支持C ++ 2011中引入的基于范围的语句。但是它有自己的语言扩展名:for each
。
尝试更改此代码
void duel::restore_assumes() {
for(auto pcard : assumes)
pcard->assume_type = 0;
assumes.clear();
}
到
void duel::restore_assumes() {
for each (auto pcard in assumes)
pcard->assume_type = 0;
assumes.clear();
}
否则你可以使用带有对象迭代器的普通循环或某些标准算法,例如std::for_each