Невозможно сравнить два перечисления одного типа в MSVC2008

Я хочу сравнить два перечисления одного типа с «<= «оператор, но выдает ошибку.

// Logger.h
namespace MT
{
class Logger
{
public:
enum LogLevel
{
LogLevel_None = 0,
LogLevel_Error = 1,
LogLevel_Warning = 2,
LogLevel_Info = 3,
LogLevel_Debug = 4
};

void log(LogLevel targetLevel,std::string time = "",std::string className = "", std::string functionName = "", std::string message = "");

private:
LogLevel level;
};
}

// Logger.cpp
void MT::Logger::log(LogLevel targetLevel,std::string time, std::string className, std::string functionName, std::string message)
{
.
.
.
if(targetLevel <= level)   // THIS LINE GIVES ERROR
.
.
.
}

Ошибка:

error C2676: binary '<=' : 'MT::Logger::LogLevel' does not define this operator or a conversion to a type acceptable to the predefined operator

Почему я получаю эту ошибку? Разве не безопасно сравнивать перечисления с реляционными операторами? Обратите внимание, что когда я static_cast перечисляет в строке ошибки, это дает другую ошибку компилятора.

Пожалуйста, помогите мне сравнить перечисления.

РЕДАКТИРОВАТЬ: Однако проблема решена; Я не могу объяснить, как это было. Я получил эту ошибку, когда пытался изменить свой существующий класс Logger на singleton, так что теперь я закончил это изменение, и ошибка исчезла. В любом случае, спасибо за ваше внимание и @Bo Persson давайте помириться.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]