无法比较MSVC2008中的两个相同类型的枚举

时间:2017-04-19 08:53:16

标签: c++ enums visual-studio-2008-sp1

我想将两个相同类型的枚举与“< =”运算符进行比较,但它会出错。

// 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类修改为单例时,我收到此错误,所以现在,我完成了此修改,错误消失了。无论如何,谢谢你的考虑和@Bo Persson让我们和平。

0 个答案:

没有答案