• ベストアンサー

enumについて

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

  • dole
  • お礼率35% (12/34)

質問者が選んだベストアンサー

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.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++では列挙型はクラス型なので多少話がややこしくなり、適切なキャスト無しに他の型との相互代入はできません。

dole
質問者

お礼

ありがとうございます!! >enum { gold, silver } ↑ このケースがなぞだったのです。 質問の仕方がへたでスイマセンでした。

その他の回答 (2)

回答No.2

#1の方がばっちり例示されていますが。 できます。 宣言時に列挙型名を省略して変数名だけを書くと、無名の列挙型ができます。 その宣言でしか変数名を作らないときに使います。 enum { BLACK, RED, GREEN, BLUE, WHITE } colors; 宣言はこんな感じで、 colors = BLUE; みたいに使います。 一種の略記法らしいです。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

例えば、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; }

関連するQ&A

  • enumの継承?

    C++で、クラス内でenumの宣言ができると思うのですが、 (1)継承した先のクラスからはどのように見えるのでしょうか? (2)そもそもenumに対してpublic等の指定は可能ですか? 本をいろいろ調べてみましたが、該当する記述がなかったため、ご回答をよろしくお願いします。

  • VB.NETでのEnumの使用について

    こんにちは、いつも拝見させて頂いております。 今回は、VB.NETのEnumについて教えて頂ければと思い、投稿しました。 VB.NETでEnum定義をしているのですが、クラス内のEnumとして定義 しているのですが、そのクラスのインスタンスを生成しなくても クラス内のEnum定義が参照できます。 クラスのインスタンスを生成していないのであれば、そのクラス内に あるEnum定義も参照できないのではないかと考えていたのですが、 参照できたので、なぜなのかがわかりません。 自分なりに色々と調べたのですが、EnumがSystem.Enumを継承している というのはわかりましたが、それがなぜ、クラスのインスタンスを生成 しないで、クラス内のEnum定義が参照できることになるのかがわかりません。 言語は、VB.NET2005です。 一応、ここの質問一覧も検索してみたのですが、該当しそうなもの が見当たらなかったので、ここに投稿させてもらいました。 お忙しいところ、申し訳ありませんが、ご教授ください。

  • enumについて

    Java2 5.0で「enum」という列挙型が導入されてそうですが、 意味がよくわかりません。 今までは、interface等に (1) public final static int a = 0; public final static int b = 1; public final static int c = 2; などと、指定してきましたが、enumを使う事で、型に”安全”に なると書かれていますが、それもよくわかりません。 ”列挙値は、整数ではない”とも見たりしますが、(1)のよな使い方 をしなくなるのでしょうか。 いつどのような使い方するのか、どなたかご教示ください。 また、私のようなものに、合うようなサイトがあれば、教えてください。 宜しくお願いします。

  • Enum 列挙型でお聞きします。

    Enum 列挙型でお聞きします。 一般的に、列挙型の使用度はどのくらいがベストなのでしょうか? あまり使用しない方がいいものなのでしょうか? たとえば、データベースにかきこまれているカラム名をEnumの列挙型で指定しようとした場合、 これはやるべきではないのでしょうか? やはり、最初から、確実に決められていないとだめなのでしょうか? どうもいまいち、よくわかりません。 参考URLは、 http://www.stackasterisk.jp/tech/java/jdk506_01.jsp#2_1を参考にしています。 よろしくおねがいします。

    • ベストアンサー
    • Java
  • javaによるenum型の扱い

    最近javaに親しんできたのですが、 Cとjavaにおける列挙型の扱いの違いに困っています。 javaにおけるenumはクラスであり、 各要素にメソッドを追加できることは分かったのですが…… 例えば、Cにおけるenumは確か、 typedef enum{EAST,SOUTH,WEST,NORTH} dirT; //定義 -------- (略) -------- dirT dir=EAST; //宣言・dirに要素EASTを格納 というようなことが出来たと思いますが、 javaはenumもクラスで、さらにnewでメモリ確保できないと聞きました。 つまり、このように列挙型の保持はできないということになるのでしょうか。 結局やりたいこととしては、このように「保持してある」列挙型に対して 条件分岐処理をしたいと考えています。 説明が上手くできず伝わりにくいかと思いますが、 どうか回答をお願いいたします。

    • ベストアンサー
    • Java
  • enum型

    お世話になります。 Javaのenum型に関してお聞きしたいです。 JavaのAPIドキュメントを見ると、enumのvalueOfメソッドに関して、 以下のように記述がありますが、具体的にどのように使用するので しょうか? public static <T extends Enum<T>> T      valueOf(Class<T> enumType,String name) どうかよろしくお願いします。

  • C語でenumの使い方

    http://www9.plala.or.jp/sgwr-t/c/sec16.html の下部に enum week { SUN, MON, TUE, WED, THU, FRI, SAT }; int main(void) { enum week w;   /* ⇒列挙型 week で変数 w を宣言 */ w = MON; /* ⇒変数 w に列挙定数 MON を代入 */ と書かれています。 列挙型 week で変数 w を宣言するのはどういうときに メリットがありますか? 普通にunsigned char w と何が違うのでしょうか?

  • enumの使い方

    scanfから入力した値からenumを使うことはできませんか? 以下のようにしてみたのですが解決策がわかりません よろしくお願いします。 #include <stdio.h> enum DATA { a=1, b, c }; int main() { enum DATA data; char tmp; scanf("%c", &tmp); // aを入力したとする data = tmp; printf("%d\n", data); // 1が欲しい return 0; }

  • enum宣言と列挙変数の初期値について

    enumを使って以下の宣言とした時 enum home { yahoo, goo ,google, excite } ; enum home net ; 変数netに何も代入しなかった場合、変数netの値(初期値)はyahooの「0」となるのでしょうか? それとも、変数netには初期値という概念は無いものでしょうか?

  • typedef enumの使い方を教えてください

    enumもtypedefも知っていますが下記コードのような typedef enumを使用したものがどういった場面で有効なのかを簡単な具体例を使って教えてください。 enum {     E1,     E2 } E; typedef enum {     e1,     e2 } e; 特に前者と後者を使いを分ける状況の違いについて教えてください。