在如下所示的类声明中定义的static enum
和enum
定义之间有什么区别?
class Example
{
Example();
~Example();
static enum Items{ desk = 0, chair, monitor };
enum Colors{ red = 0, blue, green };
}
另外,既然我们在一个类中定义类型,我们称之为什么?通过类比,如果我在类中定义变量,我们称之为成员变量。
答案 0 :(得分:11)
static
无法应用于enum
声明,因此您的代码无效。
来自N3337,§7.1.1/ 5 [dcl.stc]
static
说明符只能应用于变量和函数的名称以及匿名联合......
enum
声明不是那些。
您可以创建enum
的实例,并根据需要制作static
。
class Example
{
enum Items{ desk = 0, chair, monitor };
static Items items; // this is legal
};
在这种情况下,items
就像任何其他static data member一样。
这是MSVC bug;从链接的错误报告中,编译器似乎将允许static
声明上的register
和enum
存储说明符。该错误已被修复,因此修复程序可能会在VS2015中使用。
答案 1 :(得分:0)
static
是一个C ++存储说明符。这意味着该类成员的值对于该类的所有实例都是相同的。这里没有关于枚举的特别之处。
编辑:即使static
标签维基也有解释。正是在这个话题上。
EDIT2:哦,我误读了你的代码。没有静态枚举。您可以拥有一个包含值的枚举类型的静态变量。