错误:“ x”的声明中存在两个或多个数据类型

时间:2018-12-25 06:23:01

标签: c++ c++11

我正在编译一个C ++程序,并在下一行收到错误“声明中的两个或多个数据类型”。这是代码:

#include <iostream>
#include <string>
#include <sstream>
#include <stdlib.h>
List SplitInflix(const string infix)
{
List tokenlist;
string word= "";
char x;
for (char x : infix)
    {
    switch (x)
    {
    case '(':
        if (word != "")
        {
            Token* token = new Token(word);
            tokenlist.append(token);
            word = "";
            Token * token1 = new Token(LEFT);
            tokenlist.append(token1);
        }
        else
        {
            Token * token = new Token(LEFT);
            tokenlist.append(token);
        }
        break;
    ...
}
return tokenlist;
}

我得到了错误:

  

错误:“ x”的声明中存在两个或多个数据类型

还有更多的编码,但是它太长了,我认为这与错误无关。

我该如何解决。谢谢!

1 个答案:

答案 0 :(得分:0)

for(:) 基于范围的 的循环语言,是该语言的c++ 11 feature。因此,使用for(:)语句的以下波纹管:

for each (char x in infix)

据我所知,for(:)g++编译器兼容,并且可能与任何其他编译器不兼容。

然后从代码中删除x声明:

List SplitInflix(const string infix)
{
List tokenlist;
string word= "";
// char x;       Theres no need to this line
for each (char x in infix)
    {
    switch (x)
    {
    case '(':
        if (word != "")
        {
            Token* token = new Token(word);
            tokenlist.append(token);
            word = "";
            Token * token1 = new Token(LEFT);
            tokenlist.append(token1);
        }
        else
        {
            Token * token = new Token(LEFT);
            tokenlist.append(token);
        }
        break;
    ...
}
return tokenlist;
}