2014-09-11 35 views
1

假設我想在我的命名空間A中使用std::max函數。我將如何做到這一點?如何將單個函數引入當前名稱空間?

namespace A { 
void fun() 
{ 
    double x = std::max(5.0, 1.0); // I don't want to have to write the std:: 
} 

void fun() 
{ 
    using namespace std; 
    double x = max(5.0, 1.0); // I don't want to have to use the using directive to introduce the entire namespace 
} 

} 

有沒有辦法做到這一點?

+3

'使用std ::最大;'然後當你調用'max',它會調用'的std :: max'。除非另有明確規定,如'foo :: max'。 http://ideone.com/RpTTAn我把這留作評論,因爲這是一個簡單的答案。我不需要點。 – Brandon 2014-09-11 02:39:20

+0

@Brandon在評論中張貼答案是[針對網站政策](http://stackoverflow.com/help/privileges/comment)。我認爲這是一種愚蠢的政策,但主持人可以並且確實通過刪除與該政策不相關的所有評論;包括包含答案的評論。所以,我已經發布了一個答案,但是如果你想自己拿信用卡並回答一個答案,那麼就可以ping我,我會刪除我的 – 2014-09-11 02:55:58

+0

@MattMcNabb哇......實際上並不知道這樣的事情可能違反規則:S謝謝你讓我知道。我喜歡你的答案btw。 – Brandon 2014-09-11 04:36:22

回答

1

您可以「進口」通過在using聲明命名它們成爲個體符號:

namespace A 
{ 
    using std::max; 

這意味着A::max定義並指定相同的功能std::max;所以試圖在namespace A中查找max將會找到預期的功能。

(這是一個回答版本布蘭登對原帖評論)

相關問題