2011-09-28 141 views
4

到目前爲止,我在DecisionTree.h文件中的所有內容都是錯誤:預期聲明

namespace DecisionTree 
{ 
    public static double Entropy(int pos, int neg); 
} 

,Visual Studio已經突出顯示public並說

Error: expected a declaration.

我缺少什麼?

回答

8

public是一個訪問說明符。訪問說明符只適用於class/struct機構,不適用於namespace。在C++中(與Java不同),它必須在class正文後面跟冒號:

例如,

class DecisionTree { // <----- 'class' (not 'namespace') 
public: // <------ access specifier 
    static double Entropy (int pos, int neg); 
private: 
    int i; 
}; 
+0

Duh。我是個白癡。謝謝。 – Daniel

+0

@Daniel,當使用訪問說明符進行繼承時,您不需要':'。您可能還想了解'class'和'struct'的默認訪問說明符分別是'private'和'public'(與Java中的默認範圍不同)。 – iammilind

+0

如果我不想把這個功能放在課堂上?我該怎麼寫呢? – STF

0

它肯定會給一個錯誤,因爲你力所聲明的類,結構或枚舉和直接,你已經寫了一個命名空間中的靜態函數。所以,首先在一個名字空間裏寫一個類定義,然後再寫一個函數。