1

我是 C++ 尤其是 C++11 的新手,所以既然我现在必须使用它,就出现了一些关于“枚举”和“枚举类”的问题:

我可以在声明枚举后赋值吗?

enum MyEnum;
MyEnum::HELLO = 0;
MyEnum::WORLD = 1;

我可以为数字赋值吗?(例如:Myenum::0 = 2)

enum MyEnum;
MyEnum::0 = 16;
MyEnum::1 = 24;
MyEnum::3 = 64;

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

枚举中的条目会是结构/类的有效实例吗?

class Test {
    private int v = 0;
    Test(int v) {
        this->v = v;
    }
};

enum class MyEnum : Test {
    Test0 = new Test(0),
    Test1 = new Test(1),
};

我在搜索主题时发现了这些链接:

如您所见,其中留下了一些问题。

4

2 回答 2

4

不,你不能做任何这些。

但是,您可以在声明后提供枚举的定义

enum MyEnum; //declaration

enum MyEnum  //definition
{
  HELLO = 0,
  WORLD = 1;
};

我可以为数字赋值吗?

不,这没有意义。一个数字已经有一个。它是恒定的。


请获取有关 C++ 编程的介绍性书籍。这里有一些建议:

于 2013-01-06T13:43:25.777 回答
2

首先,你永远不能在 C++ 中赋值。以下是非法的:

42 = 23;

出于几乎相同的原因,您也不能分配枚举的值。

此外,你甚至不能在声明之后使用枚举的值(即你不能写auto x = enum_name::name;),只能在定义之后使用。您只能使用枚举的名称。

我可以为数字赋值吗?

我不确定这应该是什么意思,但除了我之前所说的之外,该语法无论如何都是非法的。也就是说,您不能通过写入来访问第二个枚举值enum_name::1

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

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

于 2013-01-06T13:46:00.920 回答