Объявление перечислений в классе C ++, проблема с переходом к перечислению в классе

У меня проблема с объявлением перечисления в моем классе. Я пытался объявить это на частном, публичном, внешнем, в основном ничего не работает. Мне нужно вызвать функцию в классе извне и использовать перечисления в функции, вот мой код.

class Algoritem {
    public:
    enum Optimization { W , A , D };
    enum FenceType { OF , CC };
    enum Eventopa { BR , OR };
    algorithem* OptimalPatrol(double N, int K, double VS, double T, Optimization F,FenceType FT, Eventopa E, double Imax,double P);
};

Когда мне нужно вызвать OptimalPatrol (), мне нужно ввести 3 перечисления. Я не могу повторно объявить их в основном, так как я могу ввести свои перечисления с переменной из основного?


person user692601    schedule 05.04.2011    source источник
comment
помощь не носителю языка: правильное написание - алгоритм   -  person stijn    schedule 05.04.2011


Ответы (1)


Вы должны указать, в каком классе определены перечисления. Так, например, вызовите функцию следующим образом:

OptimalPatrol(N, K, VS, T, Algoritem::W, Algoritem::OF, Algoritem::BR, Imax, P);

Таким образом, ваш компилятор знает, в каком классе искать объявления перечисления.

person AVH    schedule 05.04.2011
comment
(Обычно полезной альтернативой является объявление enums непосредственно перед class в том же namespace, но что лучше, зависит от того, повлечет ли упрощенное краткое использование риск столкновения с другими символами в этом пространстве имен, и документальное значение класса -имя префикс). - person Tony Delroy; 05.04.2011