2010-03-23 15 views
7

我正在使用混合使用C#(95%)和C++/CLI(5%)的項目。使用C++/CLI時的長/複合命名空間

命名空間的命名約定我的目標是美好的舊Company.Technology.Etc.。這對C#來說工作得很好。現在,我可以將這個傳遞給C++類嗎?我讀了here,化合物命名空間在C++中不受支持。

我是堅持的笨拙

namespace Company { 
    namespace Technology { 
     namespace Etc { 
      ... 
     } 
    } 
} 

爲了保持一致?

是否值得保持一致?

回答

8

是的,你堅持了下來,看到這個link。 在我看來,它是值得使用的,因爲它更易於使用並且易於使用命名空間。我通常也是在原生C++中這樣做。

2

Arg!我們也在這裏做了一些代碼。我討厭那個。

有沒有認真思考誰簽署您的薪水有什麼困惑?當Company得到由OtherCorp買,或營銷部門決定Technology從此將被稱爲eTech會發生什麼?需要更改多少代碼?

一般來說,我是反用。但在這樣的情況下,命名空間可能永遠不會在第一時間完成,而且您只是爲將來的代碼更改保存自己,我鼓勵以下代碼行,而不是在每個引用之前都粘貼那個巨大的疣:

當你有幾個相關的類和你想到他們的標識貼同名對象using Company::Technology;

命名空間一般應創建。這樣,而不是把它們稱爲foo_operationfoo_class你做foo::operationfoo::class

2

要定義嵌套名稱空間中的類型,是的,您必須按照您的描述進行操作。 但要使用的類型,嘗試 namespace CTE = Company::Technology::Etc; ,那麼你應該能夠做到如CTE::SomeClass someClass;

1

接受的答案是在Visual Studio 2015年不再是真實的。

您可以與所有sidestories使用compilerflag/STD:C++最新獲得嵌套的命名空間。