我已经相当确定要提出的问题是不可能的,除非创建自己的枚举类型,但我认为它值得将它放在那里以防万一我错过了一些东西,因为它会简化我在工作和自己的项目中经常遇到的情况。基本上,我想要一个返回枚举类中所有枚举列表的通用方法,或者至少返回所有正枚举的一般方法,直到一个枚举特定的,但另有预先确定的点。好吧,最后一个想法很混乱,所以我会发布我的意思下面的伪代码...确定枚举类中的枚举数(或任何枚举类中的特定枚举值)
一种设置特定枚举“密钥?”的方法用来返回正数枚举的数量,直到给定键:
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++没有(还)。 –