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