使用强类型枚举而不是枚举有一些好的理由。但是,强类型枚举可以转换为int类型,除了它带来的风险外,还有一些很好的用例。在我的情况下,主要是将其放入stringstream中进行日志记录和比较。
enum RiskLevel { None, Warn, Low, High, Critical };
void logStuff( RiskLevel rl ) {
stringstream ss;
ss << rl;
LOG(s);
}
void compareEnum( RiskLevel rl ) {
if ( rl > RiskLevel::Low ) {
...
}
}
我很想念旧版枚举类型的这些特性,而且我可能不是唯一一个这样想的人。有什么好方法可以使用强类型枚举并且仍然容易记录和比较它们吗?