Пока что все, что у меня есть в моем файле DecisionTree.h, это
DecisionTree.h
namespace DecisionTree { public static double Entropy(int pos, int neg); }
, и Visual Studio уже выделяет public и говорит
public
Ошибка: ожидается объявление.
Чего мне не хватает?
public - это спецификатор доступа. Спецификаторы доступа применимы только внутри class/struct тела, а не внутри namespace. В C ++ (в отличие от Java) после тела class должно следовать двоеточие :.
class/struct
namespace
class
:
Например,
class DecisionTree { // <----- 'class' (not 'namespace') public: // <------ access specifier static double Entropy (int pos, int neg); private: int i; };
Это определенно даст ошибку, поскольку вы не объявили какой-либо класс, структуру или перечисление, и непосредственно вы написали статическую функцию внутри пространства имен.Итак, сначала напишите определение класса внутри пространства имен, а затем функцию.