定义枚举后分配值

时间:2013-01-06 13:38:51

标签: c++ enums assign enum-class

我是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),
};

我在搜索主题时找到了这些链接:

正如您所看到的那样,留下了几个问题。

2 个答案:

答案 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来访问第二个枚举值。

  

当使用结构或类作为基础类型时,枚举类如何工作?

您不能将自定义类型用作基础类型,只能使用内置的整数类型。