2011-07-06 166 views
6

我有一個頭文件,我希望在定義類時使用名稱空間別名。但是我不想將這個別名公開給包含頭文件的任何東西。命名空間別名範圍問題

// foo.h 
namespace qux = boost::std::bar::baz::qux; // ! exposed to the world 
class foo 
{ 
    // can't put a namespace alias here 

    // stuff using qux:: 
}; 

我怎樣才能爲類聲明命名空間,而不會漏到任何地方?

回答

12
namespace MyClassSpace 
{ 
namespace qux = boost::std::bar::baz::qux; 

class foo 
{ 
    // use qux:: 
}; 

} 

using MyClassSpace::foo; // lift 'foo' into the enclosing namespace 

這也是最如何Boost庫做到這一點,把所有自己的東西,在一個單獨的命名空間和提升的重要標識符到boost命名空間。

+0

整潔!重新投票後+1。 –

+0

@Kerrek:多麼貼切,我剛到達我的repcap,需要等待重置! :) – Xeo

+0

混蛋,我拼命試圖讓我在接下來的兩個小時;-) –