我有以下枚舉,並很可能在項目開發的過程中進行擴展:刪除列舉元素的重複
enum myEnum {
Element1,
Element2,
Element3
...
ElementX
Last
};
我有一個使用枚舉通過以下方式功能:
bool CheckEnumValidity(myEnum a)
{
bool valid = false;
switch (a) {
case Element1:
case Element2:
case Element3:
case ...
case ElementX:
valid true;
break;
case Last:
valid false;
break;
};
return valid;
}
問題:
1)I重複Element1
在,Element2
等我的計劃中有兩個地方。如何以最安全的方式擺脫重複?
2)如果我有default
行爲拋出異常(或因爲CheckEnumValidity()
具有myEnum
類型的參數上述switch
語句返回false
)?
注:
C++ 11是我的應用程序不可用。
使用'enum class myEnum'或一個名稱空間。 –
C++ 11不適用於我的應用程序 – Konstantin
我給你留下了一個解決#2的問題,但是對於#1,試着看看這個(免責聲明:無恥的插件):https://github.com/aantron/better-enums。這給了你一個'is_valid'方法,消除了'Last'的需要,並且也給了你像'enum class'一樣的範圍和大小的枚舉,即使你沒有使用C++ 11。 http://aantron.github.io/better-enums/ApiReference.html#_is_valid_integral您基本上需要某種宏來避免重複,並且這會嘗試捕獲一些最有用的方法。 – antron