我想将两个相同类型的枚举与“< =”运算符进行比较,但它会出错。
// 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让我们和平。