enum ENUM(Option1,Option2,Option3);
string func(ENUM x)
{
switch(x)
{
case Option1: return "Option1";
case Option2: return "Option2";
case Option3: return "Option3";
}
}
这编译和工作,但给编译器警告,并非所有控制路径返回。然而,如果你恰当地使用枚举,那不是这种情况吗?如果添加了另一个ENUM val,我希望编译失败,但只要覆盖了所有的情况,我希望它能够无警告地编译。打开枚举时的编译器警告
这是编译器保护不受严重流失的值,它只是C++的一部分,需要与生活在一起?
尝试添加'default'路径。 – Archie 2011-05-09 10:39:26
@Archie:错误的解决方案,如果你忘记了一个枚举成员,那么你没有警告。 – 2011-05-09 12:27:47
@Matthieu:这不完全是最佳做法。我会一直添加默认值。如果您想要警告您忘记了某个值,请在默认情况下添加断言或抛出异常。编译器不是为了提醒你必须做的事情,而是编译你的代码。 – 2011-05-09 13:08:27