我是C ++的新手,特别是C ++ 11,所以既然我现在必须使用它,就会出现一些关于'enum'和'enum class'的问题:
我可以在声明枚举后指定值吗?
enum MyEnum;
MyEnum::HELLO = 0;
MyEnum::WORLD = 1;
我可以为数字指定值吗? (例如:Myenum :: 0 = 2)
enum MyEnum;
MyEnum::0 = 16;
MyEnum::1 = 24;
MyEnum::3 = 64;
使用结构或类作为基础类型时,枚举类是如何工作的?
枚举中的条目是否是struct / class的有效实例?
class Test {
private int v = 0;
Test(int v) {
this->v = v;
}
};
enum class MyEnum : Test {
Test0 = new Test(0),
Test1 = new Test(1),
};
我在搜索主题时找到了这些链接:
正如您所看到的那样,留下了几个问题。
答案 0 :(得分:4)
没有。你不能做任何这些。
但是,您可以在声明之后将定义枚举提供为:
enum MyEnum; //declaration
enum MyEnum //definition
{
HELLO = 0,
WORLD = 1;
};
我可以为数字指定值吗?
没有。这没有意义。数字已经有值。这是不变的。
请获得有关C ++编程的入门书。以下是一些建议:
答案 1 :(得分:2)
首先,你不能永远分配给C ++中的值。以下是非法的:
42 = 23;
出于同样的原因,你也无法分配枚举值。
此外,只有在定义之后,你甚至不能使用枚举后的值(即你不能写auto x = enum_name::name;
)。您只能使用枚举的名称。
我可以为数字指定值吗?
我不确定这是什么意思,但除了我之前所说的,语法无论如何都是非法的。也就是说,您无法通过编写enum_name::1
来访问第二个枚举值。
当使用结构或类作为基础类型时,枚举类如何工作?
您不能将自定义类型用作基础类型,只能使用内置的整数类型。