- 枚举,其实就是一组值
- 想用整数来表示某些状态,并且给他们命名
#include <iostream>
//默认情况下是无符号整型unsigned int
enum Example:unsigned char
{
//如果不指定的话,第一个
//为0,然后逐个增加
//只要没有指定的值,都会根据前一个指定的值逐个增加
A,B,C
};
int a = 0;
int b = 1;
int c = 2;
int main()
{
Example value = B;
//if (value == 1) {
if (value == B) {
std::cout << "get" << std::endl;
}
std::cin.get();
}
日志系统改进
#
#include <iostream>
class Log
{
public:
enum Level
{
//这里不能用Error,因为下面有一个同名函数
LevelError=0, LevelWarning, LevelInfo
};
private:
//日志实际级别
//m开头表示类成员变量
Level m_LogLevel = LevelInfo;
public:
void SetLevel(Level level)
{
m_LogLevel = level;
}
//关于字符串指针,后面会讲解
void Error(const char* message)
{
//因为枚举类型是整型,所以
//这里可以比较
if (m_LogLevel >= LevelError)
std::cout << "[ERROR]:" << message << std::endl;
}
void Warn(const char* message)
{
if (m_LogLevel >= LevelWarning)
std::cout << "[WARNING]:" << message << std::endl;
}
void Info(const char* message)
{
if (m_LogLevel >= LevelInfo)
std::cout << "[INFO]:" << message << std::endl;
}
};
int main()
{
Log log;
//警告或更严重的消息会被打印出
log.SetLevel(Log::LevelWarning);
log.Warn("Hello!");
log.Error("Hello!");
log.Info("Hello!");
/*
[WARNING]:Hello!
[ERROR]:Hello!
*/
std::cin.get();
}