簡體   English   中英

在C ++中分配名稱空間

[英]Assigning namespaces in C++

關於命名空間我有點困惑。 這就是我所知道的。 通常,如果您在代碼中有這樣的名稱空間

namespace foo
{ 
   namespace gfoo
   {
       class apple
       {..};
   }
}

現在使用以下代碼

using namespace foo::gfoo;

您可以直接訪問類apple而無需在類之前鍵入命名空間,例如foo::gfoo::apple

現在我在一些代碼示例中看到過

namespace qi = boost::spirit::qi

然后在方法中使用它

void someMethod()
 {
   using qi::char_
 }

現在我的問題是做namespace qi = boost::spirit::qi的目的是什么

它允許將一個(通常是復雜的)命名空間別名化為您選擇的一個。

例如:

namespace fs = boost::filesystem;

......意味着你可以打電話......

fs::exists( myFilePath );

...無需經過寫出來的努力......

boost::filesystem::exists( myFilePath );

... 每次。

這主要是為了方便。

using指令使得使用的命名空間中的名稱可用* ,而命名空間別名為命名空間創建另一個名稱,它僅為現有命名空間提供不同的(希望更短或更簡單)名稱,但您仍需要符合資格或使用使用指令使其可用

*我在這里一個非常模糊的方式使用可用 在using指令之后, 使用的命名空間中的符號將添加到當前命名空間和使用的命名空間層次結構所遇到的級別。 Lookup將始終以當前命名空間開始,然后向外移動,當它到達層次結構中的公共點時,它將從命名空間中找到否則需要限定的符號。

目的是創建更容易鍵入和讀取的別名。
目前已經就關於命名空間的別名, 這里因此這可能是重復的。

每當你看到一個長屁股的名字(或一般的任何表達方式)時,這都是錯別字甚至是容易錯過的故意差異的機會。 要使用最近的術語,聲明qi別名是DRY原則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM