【发布时间】:2021-06-29 10:51:35
【问题描述】:
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和Color2都是弱类型。 -
Color3和Color4都是强类型。
我的问题是:
1. Color3 和 Color4 有什么区别吗?
2。更喜欢哪个? Color3 还是 Color4?为什么?
【问题讨论】:
-
对于
Color1,外部类并不重要,red只是一个普通的enum。所以你真的在问enum和enum class之间的区别,是的,它们之间存在区别。两种方式都有效,因此我投票决定以基于意见的方式结束此操作,除非您将其更加专注于真正的技术问题。 -
关于强类型,尝试
std::cout << 42 + Color1::red << '\n';,然后使用Color2::red。相关:stackoverflow.com/questions/18335861/…
标签: c++ c++11 enums difference strong-typing