为什么说这是含糊的标识符?(一小段程序)

AKara 2002-04-16 09:37:56
#include <conio.h>
#include <iostream.h>

namespace car
{
int model;
int length;
int width;
}

namespace plane
{
int model;
int length;
int width;
}

void main()
{
using namespace car;
length = 1;
std::cout<<length<<endl;

using namespace plane;
length = 5;
cout<<length<<endl;

getch();
}

上面这一小段程序在编译时通不过, 说什么MAIN() 中的第二个length是"含糊的标识符"
. 为什么??
...全文
82 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AKara 2002-04-16
  • 打赏
  • 举报
回复
真的很感谢各位的指教~~~!!
wangran 2002-04-16
  • 打赏
  • 举报
回复
同意neptunez()的说法,这种情况下最好在length的前面都加上前缀,否则很容易出错,即使没有错误,也会在以后代码维护的时候难以理解!
neptunez 2002-04-16
  • 打赏
  • 举报
回复
因为using namespace car,然后using namespace plane的时候,car还是存在的,所以length模糊
Stephen_Ma 2002-04-16
  • 打赏
  • 举报
回复
#include <conio.h>
#include <iostream.h>

namespace car
{
int model;
int length;
int width;
}

namespace plane
{
int model;
int length;
int width;
}

void main()
{
using namespace car;
car::length = 1;
std::cout<<length<<endl;

using plane::length;
length = 5;
cout<<length<<endl;

getch();
}

给你介绍一本书:《c++编程思想》
blackisle 2002-04-16
  • 打赏
  • 举报
回复
用plane_length和car_length就不会产生冲突,而且易懂了
gufengduyu 2002-04-16
  • 打赏
  • 举报
回复
我想是因为length定义了两次,虽然用了不同的名字空间.但这种用法编译器可能认为以后容易产生混乱.最好在length前加上其所在的名字空间.
windindance 2002-04-16
  • 打赏
  • 举报
回复
当然了
using namespace car;中有一个length
using namespace plane;中有一个length
变量名冲突

{
using namespace plane;
length = 5;
cout<<length<<endl;
}
就可以了

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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