【发布时间】:2014-10-21 02:27:37
【问题描述】:
我正在尝试确定初始化全局强类型枚举的默认值。下面的代码当然不会编译。
#include <iostream>
using namespace std;
enum class A{a=10, b=20};
// Global strongly-typed enum, uninitialized
A k;
int main() {
if(k==A::a)
cout<<"Equal to a"<<endl;
else if(k==A::b)
cout<<"Equal to b"<<endl;
else if(k==0)
cout<<"Equal to zero"<<endl;
return 0;
}
“k”初始化为什么?
【问题讨论】:
-
@JohnnyMopp 不,这不是重复的。您链接到的那个是询问函数范围的无范围枚举。这是关于命名空间范围范围的枚举。 非常不同的东西。
-
它是重复的。您可以在上面链接的重复项的答案中找到您问题的答案
-
@glezmen 我仍然不这么认为——其他问题不包括范围枚举。是的,答案是一样的,但这并不意味着它是一个重复的问题。
-
@Angew "如果你在命名空间范围内定义了你的变量,它的值将被初始化为 0。" stackoverflow.com/questions/6842799/…
-
@glezmen 一个“作用域枚举”是
enum class,而“非作用域枚举”就是enum。链接的问题根本不处理范围枚举(enum class类型)。
标签: c++ enums initialization