错误C2143:语法错误:在':'之前缺少','

时间:2014-03-06 10:33:50

标签: c++ c++11 for-loop compiler-errors syntax-error

我正在尝试构建我的开源游戏,但在尝试构建时不断收到此错误。我一直在寻找最后半小时没有任何工作,这是错误指向的代码

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)

2 个答案:

答案 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