C++ 你更喜欢哪个?枚举类,还是嵌套的未命名枚举类型? Color1和Color2都是弱类型。 Color3和Color4都是强类型。

C++ 你更喜欢哪个?枚举类,还是嵌套的未命名枚举类型? Color1和Color2都是弱类型。 Color3和Color4都是强类型。,c++,c++11,enums,difference,strong-typing,C++,C++11,Enums,Difference,Strong Typing,我的问题是: 一,。颜色3和颜色4之间有什么区别吗 二,。你更喜欢哪个?颜色3还是颜色4?为什么? Color3和Color4都是强类型 不,试试这个: enum Color1 { red, blue, green }; // ok // enum Color2 { red, blue, green }; // error, enum conflicts struct Color3 { enum { red, blue, green }; // ok, no conflicts };

我的问题是:

一,。颜色3和颜色4之间有什么区别吗

二,。你更喜欢哪个?颜色3还是颜色4?为什么?

Color3和Color4都是强类型

不,试试这个:

enum Color1 { red, blue, green }; // ok
// enum Color2 { red, blue, green }; // error, enum conflicts

struct Color3
{
    enum { red, blue, green }; // ok, no conflicts
};

enum class Color4 { red, blue, green }; // ok, no conflicts
遗留枚举可以隐式转换为整数,但枚举类是它自己的类型

有关首选哪种,请参阅

Color3和Color4都是强类型

不,试试这个:

enum Color1 { red, blue, green }; // ok
// enum Color2 { red, blue, green }; // error, enum conflicts

struct Color3
{
    enum { red, blue, green }; // ok, no conflicts
};

enum class Color4 { red, blue, green }; // ok, no conflicts
遗留枚举可以隐式转换为整数,但枚举类是它自己的类型

至于更喜欢哪一种,请参阅Color1的

,外部类并不重要,红色只是一个普通枚举。因此,您实际上是在询问enum和enum类之间的差异,是的,它们之间存在差异。这两种方法都有效,所以我投票以基于意见的方式结束这篇文章,除非你更关注一个真正的技术问题。关于强类型,请尝试std::cout For Color1,外部类并不重要,红色只是一个简单的枚举。因此,您实际上是在询问enum和enum类之间的差异,是的,它们之间存在差异。这两种方法都有效,所以我投票以基于意见的方式结束这篇文章,除非你更关注一个真正的技术问题