namespace若干用法的疑问

zhfkt 2013-04-11 03:58:57
现在需要在一个类中使用 namespace 命名空间,代码如下



namespace myspace
{

class Test
{
using namespace std;
};

}



但是代码报错,应该是类中不能申明命名空间。

事实上代码的本意是希望仅在类Test中使用std命名空间,而不污染外层的myspace空间。希望询问的是应该如何撰写这段代码,或者换一段代码能够曲线救国。
...全文
292 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCSE2012 2013-04-12
  • 打赏
  • 举报
回复
引用 12 楼 regainworld 的回复:
再加一层就行了: C/C++ code?12345678910namespace myspace{ namespace test{using namespace std;class Test{}; }}
12楼正解,学习了
zhcosin 2013-04-12
  • 打赏
  • 举报
回复
引用 14 楼 zhfkt 的回复:
引用 13 楼 zhcosin 的回复:把 using 语句放在成员函数的开始处。 这样每个函数都要写一个using,还是感觉会比较麻烦。。。
写在 cpp 文件的开头不就行了?
zhfkt 2013-04-12
  • 打赏
  • 举报
回复
引用 12 楼 regainworld 的回复:
再加一层就行了: C/C++ code?12345678910namespace myspace{ namespace test{using namespace std;class Test{}; }}
也算是一个方法
zhfkt 2013-04-12
  • 打赏
  • 举报
回复
引用 13 楼 zhcosin 的回复:
把 using 语句放在成员函数的开始处。
这样每个函数都要写一个using,还是感觉会比较麻烦。。。
zhcosin 2013-04-11
  • 打赏
  • 举报
回复
把 using 语句放在成员函数的开始处。
regainworld 2013-04-11
  • 打赏
  • 举报
回复
再加一层就行了:

namespace myspace
{
 namespace test
{
using namespace std;
class Test
{
};
 }
}
CCSE2012 2013-04-11
  • 打赏
  • 举报
回复
引用 8 楼 zhfkt 的回复:
引用 5 楼 studyCBC 的回复:用作用域,即std::,这个没什么麻烦的 map前面加上std看起来就比较蛋疼:std::map<std::string,std::string>太罗嗦,所以还是尽可能希望 map<string,string>直观一点好。。。。。
抱歉,我弄错了,你把using namespace std写在cpp里面,这样应该是不包含的,(.h)里面用std::。
七擒关羽 2013-04-11
  • 打赏
  • 举报
回复
引用 8 楼 zhfkt 的回复:
引用 5 楼 studyCBC 的回复:用作用域,即std::,这个没什么麻烦的 map前面加上std看起来就比较蛋疼:std::map<std::string,std::string>太罗嗦,所以还是尽可能希望 map<string,string>直观一点好。。。。。
比如使用频繁 就用宏代替 #define STD_MAP std::map
CCSE2012 2013-04-11
  • 打赏
  • 举报
回复
引用 7 楼 zhfkt 的回复:
引用 6 楼 CCSE2012 的回复:Test类不能单独写一个.h和.cpp吗 Test类可以单独写一个文件,但是using namespace std;如果写在单独的文件中,那么别的文件#include "test.h" 的话,也会将using namespace std;包含进去。
命名空间应该是不包含的,你试一下
zhfkt 2013-04-11
  • 打赏
  • 举报
回复
引用 5 楼 studyCBC 的回复:
用作用域,即std::,这个没什么麻烦的
map前面加上std看起来就比较蛋疼:std::map<std::string,std::string>太罗嗦,所以还是尽可能希望 map<string,string>直观一点好。。。。。
zhfkt 2013-04-11
  • 打赏
  • 举报
回复
引用 6 楼 CCSE2012 的回复:
Test类不能单独写一个.h和.cpp吗
Test类可以单独写一个文件,但是using namespace std;如果写在单独的文件中,那么别的文件#include "test.h" 的话,也会将using namespace std;包含进去。
CCSE2012 2013-04-11
  • 打赏
  • 举报
回复
Test类不能单独写一个.h和.cpp吗
七擒关羽 2013-04-11
  • 打赏
  • 举报
回复
用作用域,即std::,这个没什么麻烦的
zhfkt 2013-04-11
  • 打赏
  • 举报
回复
引用 3 楼 CCSE2012 的回复:
里面用的时候可以用std::作前缀,不过这么挺麻烦的
就是会觉得太麻烦,所以才希望在整体的类中先申明 using namespace std;
CCSE2012 2013-04-11
  • 打赏
  • 举报
回复
里面用的时候可以用std::作前缀,不过这么挺麻烦的
zhfkt 2013-04-11
  • 打赏
  • 举报
回复
引用 1 楼 qq120848369 的回复:
#include 过包含std的头文件吗.
include <vector>; 在stackoverflow上似乎已经有人提出过这个问题,不过并没有妥善的解决方案,只说了确实不能这样写。。 http://stackoverflow.com/questions/6326805/why-using-namespace-x-is-not-allowed-inside-class-struct-level?lq=1
qq120848369 2013-04-11
  • 打赏
  • 举报
回复
#include 过包含std的头文件吗.

64,637

社区成员

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

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