enum weight { light, medium, heavy, very_heavy };
cout << w;
注意,枚举类型的对象的初始化或赋值,只能通过其枚举成员或同一枚举类型的其他对象来进行。
下面的例子显示了在C++中使用枚举类型的一些不同方法:在全局范围内、在类定义内部、在函数内部等。在X类的定义中,我们首先定义了两个枚举类型:第A行声明了一个A类的weight枚举类型,第B行则声明了一个A类的无名枚举,它只包含两个符号常量d1和d2,表示两个特定的整型值。接下来在第C行是一个构造函数。第A行和第B行声明的枚举的作用域到类定义结束为止。然后,我们在这个类中声明了两个数据:int类型的x和weight类型的wx。在这个类的定义结束之后,第D行和第E行是另外两个全局性质的枚举。
#inlcude <iostream>
using namespace std;
class A
{
public:
enum weight { light, medium, heavy, very_heavy };
enum {d1 = 3, d2 = 5 };
A(int i, int j) { x = i + d1; wx = (weight)(j +medium); }
void print() const {cout<<x<<" "<<wx<<endl; }
private:
int x;
weight wx;
};
enum { c1 = 17, c2 = 19 };
enum height { tall, very_tall };
int main()
{
A obj1(100, 200);
obj1.print();
// A obj2(100, A::light);
int y = c1;
cout << y << endl;
height h;
h = tall;
cout << h << endl;
return 0;
}
在main函数中,我们在第F行用两个参数100和200调用了X的构造函数。这个被创建的对象的有趣之处在于它的数据成员wx的值是201,如第H行的输出所示。但是,这个值并不在第A行所声明的weight类型所允许的符号常量值的范围之内。一般而言,枚举类型可以得到一个在枚举声明中并没有列出或枚举器提示范围之外的值。