2013-12-10 27 views
1

我有一個名稱空間層次結構,並希望給出一些長名稱空間名稱的縮寫。例如,我有如何給名稱空間添加縮寫?

Math::Geometry::OneDimension:: 

,我想使用OneDimensionGeGeometryD1因此以下工作

Math::Ge::OneDimension:: 
Math::Geoemtry::D1:: 
Math::Ge::D1:: 

是否可以使用命名空間別名辦呢?

回答

3

要訪問它這樣,你需要申報其封閉命名空間內的命名空間的別名:

namespace Math { 
    namespace Ge = Geometry; 
    namespace Geometry { 
     namespace D1 = OneDimension; 
    } 
} 

你可以的當然,在其他示波器中聲明別名,並在該範圍內簡單地將其作爲GeD1進行訪問。

8

您可以使用命名空間別名:

namespace D1 = Math::Geometry::OneDimension; 
+0

不應該使用XXX = ...? –

+0

@ the_drow:不,''using'只是將名稱空間帶入作用域。它不爲命名空間創建別名。 –

+0

我確定我前段時間使用過XXX = YYY。 –

2
namespace Ge = Math::Geonetry::OneDimension; 
1

要麼你可以做混淆了命名空間內,或者,你可以做到這一點,從命名空間的外部:

namespace Ge = Math::Geometry; 
namespace D1 = Ge::OneDimension; 

Ge::element_of_geometry; 
D1::element_of_one_dimension; 

我喜歡這個解決辦法,但使用它在一個範圍內,以避免名稱衝突。