2009-11-25 67 views
5

雖然通過覆蓋率回顧了我們的C++類,但它在特定的類上顯示了錯誤消息。該類如下:類聲明中使用的類標識符。這是一個好習慣嗎?

class InputRecord 
{ 
    /* Construtor */ 
    ... 
    InputRecord::RejectRecord(); 
    ... 
    /* Destructor */ 
} 

在類內部使用標識符有什麼意義?遵循這一點是否是一個好習慣?

感謝, 馬修禮居

回答

5

在GCC編譯(V4.1以上),這將失敗,出現「錯誤:額外的資格」進行編譯。因此不要把它放在那裏是一個好習慣!

here其中討論了額外的資格不合法的C++。

+0

不僅僅是gcc,除Visual Studio之外的任何編譯器。 – 2009-11-25 15:36:41

0

天兒真好,

我一直認爲,這類標識的實施只用在類的定義是沒有必要的。

類聲明是

class InputRecord; 

你有什麼有一個類定義。

class InputRecord 
{ 
    /* Construtor */ 
    ... 
    RejectRecord(); 
    ... 
    /* Destructor */ 
} 

然後在.cpp文件你有實現

InputRecord::RejectRecord() 
{ 
    ... 
} 
+0

即使這是我的理解。在作出任何改變計劃的決定之前,我只想確認我的理解。總之感謝:-) – 2009-11-25 12:07:56

0

在一般情況下,不會有其中由明確的InputRecord::您的代碼示例中提供的消歧可能是任何東西的情況下除了冗餘。

如果代碼是做複雜的操作,其中特定類是相關的(說你把它傳遞到有陰影的版本一個基類),那麼它可以幫助代碼的清晰度,使之明確。

這有點像使用this->(或在C#/ Java中爲this.)。

個人而言,我會刪除任何這些多餘的符,找到讓整個點的另一種方式。

+0

的答覆其實我覺得用C++和Java應該強制人們使用這個成員變量,所以我們沒有到了他們的名字mValue,m_value,m_Value,VALUE_等。 – 2009-11-25 14:48:31

+0

我們必須將它們命名爲'm ...'? :P從函數編程的角度來看,您希望在使用狀態之前先考慮使用/從OO的角度來看,它將是'正常的'。對於某些類型的東西,這看起來真的很醜。有些編程「標準」說沒有前綴,因爲它應該從代碼中清楚它是否是成員或參數 - 如果您正在編寫正確的代碼,這很好。 (我個人不使用匈牙利語法,而是使用[_']知道它的錯誤,因此我不得不在前綴'this.'處加上前綴]。我認爲這是一個沒有OSFA解決方案的明確例子。 – 2009-11-25 15:10:29

0

在類的定義,我只用類標識符,如果我有一個類似命名的(或相同)的類的私有成員參數。它避免了含糊不清,並且使代碼更易於同時閱讀。我想不出你需要使用它的另一種情況。

相關問題