关于namespace同名使用的问题

limlzm 2006-02-20 02:58:11
在看代码的时候我发现了一个奇怪的现象,就是
六个文件:cmd.h cmd.cpp server.h server.cpp client.h client.cpp
声明在.h里面,具体定义在.cpp里面.
namespace ABC
{
...
}
同一个名字在三个头文件定义了,只是...的内容不同,一个是各个cmd的定义声明,一个是server端的class定义,还有一个是client端的class定义。我查看了makefile,server跟client是分开的,也就是说之间没有联系。这样应该不会出现using namespace ABC找不到,但server和client都用到了cmd的定义,cmd的定义也是用namespace ABC{}。那这样他怎么区分到底是哪个呢?
如果在servemain里面用using namespace ABC;他能找到是cmd的定义和server的class的函数吗?
(感觉好像重载了namespace ABC)
...全文
351 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
limlzm 2006-02-20
  • 打赏
  • 举报
回复
明白了,谢谢。结贴
dragonzxh 2006-02-20
  • 打赏
  • 举报
回复
是的,命名空间可以是非连续的。
limlzm 2006-02-20
  • 打赏
  • 举报
回复
感觉好像就是cmd跟其他两个中的一个加在一起。我举个实例吧
//cmd.h
namespace ABC
{
enum CmdType
{
CONNECT_SUCCESS = 1,
CONNECT_FAIL
}

}
//server.h
#include "cmd.h"
namespace ABC
{
class C1
{
void foo();
}
}
//server.cpp
#include "server.h"
namespace ABC
{
void foo()
{
cout<<"hello."<<endl;
}
}
//sermain.cpp
#include "server.h"
using namespace ABC;//此处是不是cmd+server呢?
C1 ex1;
int main()
{
ex1.foo();
return 0;
}

//是不是说此时的ABC就是cmd与server的并集呢?如果内容没有重复就允许,如果重复就保错呢?
dragonzxh 2006-02-20
  • 打赏
  • 举报
回复
首先namespace也是包含在文件里的,
你不#include这些文件自然可以区分。楼主应该属于这种情况。包含了不同文件中的同名的namespace,自然可以区分
其次,namespace可以嵌套。不知道楼主是不是abc::ab:A a;这样来声明~

64,654

社区成员

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

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