2011-05-26 47 views
1

如果我有一個名爲SomeClassName的類,每次我指的是該類中的某些內容時,是否可以避免編寫SomeClassName::?我正在考慮命名空間,我可以將這些定義放在using MyNamespace { ... };的範圍內,並避免每次都寫下這個類的命名空間(壞習慣?)。縮短靜態定義

其中的一個原因是,現在我有這樣的代碼,這是相當長的,難以閱讀IMO:

SomeClassName::SimpleStruct SomeClassName::m_someTable[SomeClassName::m_someTableSize][SomeClassName::m_someTableSize] = {SomeClassName::EmptyStruct}; 
+0

可能重複(HTTP://計算器。 com/questions/6083184/using-directive-class-static-functions) – orlp 2011-05-26 18:37:46

回答

2

沒有,但可以縮短名稱以一個typedef,如果你追求的是更少的輸入:?using指令類的靜態函數]的

typedef SomeClassName SCN; 
+0

這是否在問題中列出的具體情況下工作,定義了在類中聲明的靜態變量?我不認爲它確實如此。 – 2011-05-26 18:41:18

+0

@Mark它爲一個簡單的例子,但我沒有設法理解/複製OP給出的例子。 – juanchopanza 2011-05-27 07:03:02

1

只需使用全局類型/枚舉來代替。

1

你不幸有與::範圍解析運營商完全有資格標識符名稱指的是一個標識符的另一個命名空間/範圍內時(類定義範圍爲好),以及using指令只能與namesapaces工作。唯一的其他選擇是像約翰提到的那樣使用typedefs,或者可能使用宏。如果你沒有這個限制,那麼你最終會遇到標識符名稱衝突,並且會以C風格的命名約定結束,因爲函數名稱可能會變得很長,因爲它們基本上將名稱空間放入函數/標識符名稱。