"'之前的预期初始化程序:'令牌"以范围为基础

时间:2017-07-04 16:39:53

标签: c++ for-loop

#include <iostream>
#include <array>
using namespace std;

typedef int type;
typedef array <type,6> Liste;
bool appartient(type element, Liste liste);

int main()
{
    Liste maliste = {4,5,-3,12,7,-33};

    cout << appartient(13, maliste) << endl;
    cout << appartient(12, maliste) << endl;
    return 0;
}

bool appartient(type x, Liste liste) 
{
    for (auto element: liste) {  //////this line!!!!!!!
        if (x == element) return true;
    }
    return false;
}

我正在用c ++编写这个表练习。在这里,我正在撰写一篇文章&#34; appartient&#34;验证列表中元素的适应性。但是我在这个方面有一些错误:

1 /错误:在&#39;之前预期的初始化程序:&#39;令牌

2 /错误:在&#39;返回&#39;

之前预期的primary-expression

3 /错误:预期&#39;;&#39;之前&#39;返回&#39;

4 /错误:在&#39;返回&#39;

之前预期的primary-expression

5 /错误:预期&#39;)&#39;之前&#39;返回&#39;

为什么?

2 个答案:

答案 0 :(得分:2)

显然你的编译器不支持range-based for-loops,至少不支持你正在使用的选项。

自GCC v4.6,Clang v3.0,MSVC v17.0,eccp v4.5,Intel C ++ v13.0,IBM XLC ++ v13.1.2,Sun / Oracle C ++以来,基于范围为supported 5.13,Cray v8.4,PGI 2015和HP aCC A.06.28。

检查您的编译器是否是最新的,并查看其手册,了解如何激活C ++ 11支持。

答案 1 :(得分:-1)

您是否尝试使用for循环或者您想使用for_each循环?

“for”的sintax要求您初始化将用作索引的变量,并且还指定此变量的增量。试试这个:

bool appartient(type x, Liste liste)
{
   for(auto element = 0; element <= 6; element ++)
   {
      if (x == element) return true;
   }
   return false;
}

这只是一个非常原始的例子。我相信你可以使你的代码更漂亮。在这里检查for循环的sintax:for loops

我希望这可能有所帮助。