enumでタグを指定しないで、宣言することは可能でしょうか??
もし可能だあれば、どのように宣言し、参照する際はどのようになるのでしょうか?

A 回答 (3件)

列挙型宣言の書式は



enum タグ名 {
列挙定数宣言
} 列挙型変数名 ;

enum タグ名 {
列挙定数宣言
} ;

enum タグ名 列挙型変数名 ;

enum {
列挙定数宣言
} 列挙型変数名 ;

enum {
列挙定数宣言
} ;

よって、
enum RGB { red, green, blue } rgb ;
enum CMY { cyan, magenta, yellow } ;
enum CMY cmy ;
enum { black, white } monochrome ;
enum { gold, silver } ;
全て有効な宣言です。

参照時は
rgb = red ;
cmy = cyan ;
monochrome = black ;

Cの場合、列挙型は整数型と相互に代入可能なので
int col = gold ;

C++では列挙型はクラス型なので多少話がややこしくなり、適切なキャスト無しに他の型との相互代入はできません。
    • good
    • 0
この回答へのお礼

ありがとうございます!!

>enum { gold, silver }

このケースがなぞだったのです。

質問の仕方がへたでスイマセンでした。

お礼日時:2001/12/10 18:47

#1の方がばっちり例示されていますが。



できます。
宣言時に列挙型名を省略して変数名だけを書くと、無名の列挙型ができます。
その宣言でしか変数名を作らないときに使います。

enum { BLACK, RED, GREEN, BLUE, WHITE } colors;
宣言はこんな感じで、

colors = BLUE;
みたいに使います。

一種の略記法らしいです。
    • good
    • 0

例えば、C++ だと、こんな感じ。



#include <iostream.h>

class A {
public:
enum { E1, E2 } x;
};

int main()
{
A a;
a.x = A::E2;
cout << a.x << endl;
return 0;
}


C なら、こんな感じ。

#include <stdio.h>

int main()
{
enum { E1, E2 } x;
x = E2;
printf("%d\n", x);
return 0;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


おすすめ情報

カテゴリ