可耻啊!!! class的声明里不可以using namespace吗??????

cryincold 2008-03-27 01:24:11
55555555555~~

// foo.h

class foo
{
using namespace std; // 不可以哦.出错啊.我只好 using std::string, using std::map 等等了...
};

// foo.cc

// definition here

55555 ~~~
报错: error C2059: syntax error : 'namespace'

但是把using namespace std;放在class的声明外边就可以通过编译.但不愿意在头文件里using namespace std .
我要把它放在class foo {} 里面. 但报错. 我又想是不是放在class的声明里和放在声明外效果是一样的呢?都造成了潜在的名字空间污染.
标准的做法应该是怎样的呢???
...全文
257 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
paidfighting 2008-03-27
  • 打赏
  • 举报
回复
up,lz结贴吧~
Supper_Jerry 2008-03-27
  • 打赏
  • 举报
回复
怕麻烦就拿到外面来。
cryincold 2008-03-27
  • 打赏
  • 举报
回复
还是采用 dizuo 说的.
谢谢 akirya 的评论. 佐证了我的写法还是合理的,虽然麻烦.
cryincold 2008-03-27
  • 打赏
  • 举报
回复
头文件会被很多文件include,这里std空间里的名字全进入了全局名字空间. 造成名字污染!

如果在外面把std using使std进入全局名字空间,那C++为什么还要把标准库的名字放在std?

<thinking in c++> 强烈建议不能在header文件中using namespace std; <C++必知必会>认为在header file中using namespace std"是个馊主义...基本上又退回到了原点."

我查C++ primer,但没有找到好的方法.
using std::string;
using std::map;
....
这样做了.敲字母都敲到手痛.
sheenl 2008-03-27
  • 打赏
  • 举报
回复
在类里面可以using std::string;吗?

好像也不可以。
babyvox1999 2008-03-27
  • 打赏
  • 举报
回复
自己写编译器!!
wwoo_1105 2008-03-27
  • 打赏
  • 举报
回复
hehe,弄出来吧
  • 打赏
  • 举报
回复
又想方便又不想无副作用。比较难呀
ryfdizuo 2008-03-27
  • 打赏
  • 举报
回复
using std::cout;
using std::endl;
一般就是这样子写的,或者凡是用到std里面的成员是全加上std::


clhposs 2008-03-27
  • 打赏
  • 举报
回复
刚刚没看清楚不好意思 放在最上面不行吗

一定要放到CLASS里面?
clhposs 2008-03-27
  • 打赏
  • 举报
回复
-_-为什么一定要放再里面的
clhposs 2008-03-27
  • 打赏
  • 举报
回复
没有指定 public或者private

64,701

社区成员

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

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