碰到个switch中的枚举问题 不知道我又哪短路了。

wudaijun 2012-03-19 09:30:44
#include<iostream>
using namespace std;

enum dir{up, down, left, right};
enum dir direct;
void moving()
{
switch(direct)
{
case up: break;
case down: break;
case left: break;
case right: break;
}
}
int main()
{
moving();
return 0;
}
这是我在写贪吃蛇代码中碰到的问题, 我把它简化了。以下是报错。
E:\Microsoft Visual Studio\Common\MSDev98\Bin\Cpp1.cpp(12) : error C2872: 'left' : ambiguous symbol
E:\Microsoft Visual Studio\Common\MSDev98\Bin\Cpp1.cpp(13) : error C2872: 'right' : ambiguous symbol
请教。
...全文
243 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudaijun 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 janic716 的回复:]

left, right 已经在iostream中定义了,代表左对齐,右对齐

建议改定义的标识符
不然就用case:0,1,2,3
或者用stdio.h代替iostream
[/Quote]
哦哦 我刚开始想过这个问题。 但是我试过c版本的源代码 可以执行。 原来这个是iostream中的。 谢谢你了
draracle 2012-03-19
  • 打赏
  • 举报
回复
不要用那么简单的单词。
janic716 2012-03-19
  • 打赏
  • 举报
回复
left, right 已经在iostream中定义了,代表左对齐,右对齐

建议改定义的标识符
不然就用case:0,1,2,3
或者用stdio.h代替iostream
quwei197874 2012-03-19
  • 打赏
  • 举报
回复
vc6的问题
小坏猪猪 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 l460602540 的回复:]
void moving(int direct)
{
switch(direct)
{
case up: break;
case down: break;
case left: break;
case right: break;
}
}
[/Quote]

UP++,因为枚举里面值是int类型

*******************************************************************************
* C++经典之作下载链接:http://blog.csdn.net/jerryjbiao/article/details/7358796
*
********************************************************************************
不二Se 2012-03-19
  • 打赏
  • 举报
回复
把left 和right换成其他的其他的就能编译通过了 是比较奇怪 肯定left和right在其他文件中有特殊含义的吧
l460602540 2012-03-19
  • 打赏
  • 举报
回复
void moving(int direct)
{
switch(direct)
{
case up: break;
case down: break;
case left: break;
case right: break;
}
}

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧