2016-02-12 110 views
5

感谢C++ 11,我们已经获得了有限范围和强类型的枚举。
但是有没有计划让这个可扩展呢?可扩展枚举计划

事情是这样的:

enum class OneTwoThree : char {one=1, two=2, three=3}; 
enum class Four : char {four=4} extends OneTwoThree; 
+0

据我所知,不是。 – Vitaliy

+1

如果我没有弄错,'enum class'声明只是说禁止枚举值/整数/等之间的隐式转换,它实际上并不会导致枚举表示一个完整的类型,就像它在Java/Python /等等更不用说子类的语法已经被用来指示底层的数据类型,而'extends'不是C++关键字,iirc C++标准委员会不喜欢增加新的关键字。如果你真的需要C++中的子类化枚举类型,你最好使用带有可变参数,它会给你所有枚举的编译时间正派 – JAB

+4

@JAB模板:_Complete type_在C++特定的含义,和* *每个**'enum'类型都是_complete type_。 'void'是一个不完整的类型的例子。 – MSalters

回答

3

它不会出现如此。

没有纸张就没有C++。方便的是,您可以在线查看所有在线文章here,并在official forums的研究小组中进行更多的非正式讨论(“Future Proposals”小组可能是您对枚举更改感兴趣的人) 。

对于论文,征文粗略搜索标题回至2011年揭示了以下主题:

这些论文都没有涉及向现有枚举中添加值的机制。类似地,在Future Proposals组中对“enum”的粗略搜索会产生大量的主题,其中没有一个看起来像是从枚举的初始定义以外的地方向枚举中添加新值。


已经做了几次尝试来实现这种没有库或语言紊乱的功能; questions exploring the subject already exist on StackOverflow,可能对你有用。

+0

谢谢你的广泛答案。 – ttuna