我已經相當確定要提出的問題是不可能的,除非創建自己的枚舉類型,但我認爲它值得將它放在那裏以防萬一我錯過了一些東西,因爲它會簡化我在工作和自己的項目中經常遇到的情況。基本上,我想要一個返回枚舉類中所有枚舉列表的通用方法,或者至少返回所有正枚舉的一般方法,直到一個枚舉特定的,但另有預先確定的點。好吧,最後一個想法很混亂,所以我會發布我的意思下面的僞代碼...確定枚舉類中的枚舉數(或任何枚舉類中的特定枚舉值)
一種設置特定枚舉「密鑰?」的方法用來返回正數枚舉的數量,直到給定鍵:
template<typename EnumType>
std::vector<EnumType> getFullEnumList()
{
std::vector<EnumType> fullEnumList;
for (enumIndex = 0; enumIndex < EnumType::NumEnums; enumIndex++)
fullEnumList.push_back(static_cast<EnumType>(enumIndex));
return fullEnumList;
}
我猜這不會是一個實際的東西來實現上面的陳述,因爲編譯器不關心我我已經調用了每個枚舉類的值,只有它的值和類的類型......所有編譯器在最終編譯階段處理的權利?
我的第一個想法,我想會涉及某種:
EnumClass::size()
...功能,這點我已經知道是不存在的,但我目前不知道有足夠的瞭解枚舉的細節類來理解爲什麼這將不可能實現在未來的C++迭代......我猜這是不可能的,或者這將是在大多數枚舉類用例中不希望的額外開銷,否則他們會實現它幾年前...
但是爲了縮小我的實際問題,在額外的知識塊之上,你們可以提供給我關於t他以上的沉思,有沒有一些通用的方式來做到這一點,我沒有想到?
乾杯提前爲您的見解,
皮特
你的問題是不是僅僅讓普查員的數量更大。不要忘記枚舉器不必命名連續值('enum foo {bar = 22,baz = 420000};') – StoryTeller
沒有將設施指定爲C++本身的一部分。您可以編寫一個程序來解析枚舉類型的定義,並輸出源代碼以生成列表。該程序需要處理枚舉類型中的值不連續,給定數值的名稱不止一個等等。如果您真的想要,該程序還可以輸出將枚舉值映射到字符串的代碼。 – Peter
聽起來像你想要一些編譯時反射 - 哪些C++沒有(還)。 –