我正在编译一个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”的声明中存在两个或多个数据类型
还有更多的编码,但是它太长了,我认为这与错误无关。
我该如何解决。谢谢!
答案 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;
}