2012-12-09 39 views
4

Possible Duplicate:
Why is ‘using namespace std;’ considered a bad practice in C++?如何避免shared_ptr歧義? (STL VS升壓)

我用我的代碼stlshared_ptr很多地方,我已經使用了以下using聲明的任何地方,我已經使用shared_ptr

using namespace std::tr1; 

現在我需要使用boost::bimap。所以我必須包括在我的代碼下面的頭文件:

#include <boost/bimap.hpp> 

只要我包括bimap頭文件中,shared_ptr類型變得模糊,我不得不改變的shared_ptr所有使用到std::tr1::shared_ptr。由於這使得我的代碼變得醜陋,我正在尋找一種方法來避免這種歧義,而無需在全球各地聲明shared_ptr並使用完全限定名稱。我正在考慮爲std::tr1::shared_ptr使用typedef,但也許有更好的方法。任何意見,將不勝感激!

+1

所以你有一個使用聲明來提升呢? – Useless

+6

我們終於明白爲什麼'使用'指令對國家來說是一個災禍。只是。說。編號 –

回答

5

根本就不介紹它。避免了一般using namespace ...

4

如何如下:

using shared_ptr = std::tr1::shared_ptr; 

但是,正確的答案應該是實際不使用using namespace ...聲明,或僅使用它來創建命名空間別名。

順便說一句,你知道std::tr1是自從去年C++ 11變得標準化以來是obselete?

+0

我知道,但由於一些限制,我無法切換到C++ 11。 – Meysam

+0

和上面的'using'不起作用:'錯誤:在'share_ptr''之前預期的嵌套名稱說明符' '錯誤:期望';'在'='標記之前' – Meysam

+0

@Meysam什麼編譯器和它是什麼版本你在用嗎?可能它不支持新的別名。 –