7

可能重复:
为什么是“使用命名空间标准;” 在 C++ 中被认为是一种不好的做法?

我在我stlshared_ptr代码中使用了很多地方,并且在我使用过的任何地方都使用了以下using语句shared_ptr

using namespace std::tr1;

现在我需要使用boost::bimap. 所以我必须在我的代码中包含以下头文件:

#include <boost/bimap.hpp>

一旦包含bimap头文件,shared_ptr类型就会变得不明确,我必须更改 to 的所有shared_ptr用法std::tr1::shared_ptr。由于这使我的代码变得丑陋,我正在寻找一种方法来避免这种歧义,而无需在shared_ptr任何地方使用完全限定的名称进行声明。我正在考虑使用typedeffor std::tr1::shared_ptr,但也许也有更好的方法。任何意见,将不胜感激!

4

2 回答 2

6

干脆就不介绍了。避免一般using namespace ...

于 2012-12-09T12:48:32.070 回答
5

以下情况如何:

using shared_ptr = std::tr1::shared_ptr;

但是,正确的答案实际上是不使用该using namespace ...语句,或者仅使用它来创建命名空间别名。

顺便说一句,你知道std::tr1自从去年 C++11 标准化以来它已经过时了吗?

于 2012-12-09T12:49:02.273 回答