2011-09-28 150 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

它肯定会给一个错误,因为你力所声明的类,结构或枚举和直接,你已经写了一个命名空间中的静态函数。所以,首先在一个名字空间里写一个类定义,然后再写一个函数。