• ベストアンサー

C++のenumについて質問

C++のenum文で、 enum Sample { a, b, c, }; とあったとき、このSampleの要素数(?)である3を 何らかの方法で収得することは可能でしょうか?

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

  • ベストアンサー
回答No.1

 こんにちは。  私の記憶では無かったかと。手っ取り早く enum Sample { a, b, c, count, };  として、countを使用するのでは駄目でしょうか。

imogami
質問者

お礼

なるほど!回答ありがとうございます。 初心者なもので気づきませんでした。こんな方法があるんですね。 これでやってみます。

関連するQ&A

  • enumをintとして扱う必要があるパターンはあるのでしょうか。

    enumをintとして扱う必要があるパターンはあるのでしょうか。 よく enum ENUM_SAMPLE {  A,  B,  C, }; class CLASS_SAMPLE { private:  int type; // ENUM_SAMPLEのA,B,Cしか入らない public:  int GetType(){ return type; } }; という記述を良く見かけます。 class CLASS_SAMPLE { private:  ENUM_SAMPLE type; // ENUM_SAMPLEのA,B,Cしか入らない public:  ENUM_SAMPLE GetType(){ return type; } }; のほうが良いのではないか思うのですが、intで定義することによる利点が何かあるのでしょうか。 あと、過去に // bcc利用時に問題があるのでintに変更しました int CLASS_SAMPLE::GetType {  return type; } というコメントがついたソースを見たことがあり、 自分でbccを使ってenumを返すように修正してテストしてみたことがあるのですが、何が問題なのか見つけることが出来ませんでした。 enum名を直接使用した場合に問題が発生することがあるのか、またどのような問題が発生することがあるのか、回答お願いします。

  • ifdefとenum

    enum { INDEX_A = 0, INDEX_B, INDEX_C, INDEX_END }; #ifndef INDEX_END #define INDEX_END 10 #endif enum{}文で定義した名前は#ifndef,#ifdef文の対象外でしょうか?

  • 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; }

  • C言語の enum の使い方

    インターネットのサイトなどを利用してC言語を勉強しています。 いま一通り基本的な勉強が済んだところですが、enum というユーザー定義変数をどんな風に使えばよいのか、今ひとつわかりません。サンプルコードなどを見ても、 enum でなくても配列を使えば出来そうなものが多いのですが、この型の変数はどう使えば効果的なのでしょうか。 詳しい方、どうかよろしく教えてください。

  • 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)のよな使い方 をしなくなるのでしょうか。 いつどのような使い方するのか、どなたかご教示ください。 また、私のようなものに、合うようなサイトがあれば、教えてください。 宜しくお願いします。

  • 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に数字と配列

    C#で数値で、配列の列挙はできないでしょうか。 やりたいイメージは以下です。 public enum abc : byte[] { 1 = {0x30, 0x31}, 2 = {0x32, 0x33}, 3 = {0x34, 0x35}, } public enum abc : byte[] { A = {0x30, 0x31}, B = {0x32, 0x33}, C = {0x34, 0x35}, } いろいろ試しましたが、できませんでした。お願いします。

  • 異名同音(C# = Db)をenumで表現する方法

    質問です。 友達がギターコードを表示するプログラムを組もうとしています。 そこで問題なのがコードには異名同音(例えばC#とDbは同じ音)があるので enumでどう表現すればよいのか分からない、ということです。 彼はプログラマーとして働いているのでenumの使い方は熟知してます。 自分は音楽専門でenumは授業で習ったくらいです。 僕はenumを使わずにC=1, C# or Db=2 , D=3, D# or Eb=4, E=5, ... B=12という感じで 割り振ったらどうか、と素人考えで助言したのですが 転調などを考えるとenumの方が良いそうです。 うむ、確かに納得ですが…。 皆さんはこういうプログラムのときはどのように処理してるのでしょうか? なるべく実際に音楽関連のソフトを組んだ経験のある人に答えていただきたいです。 彼には借りがあるので、どうかよろしくお願いします。

    • ベストアンサー
    • Java
  • enumの値から定義名を文字列化したい

    C++でenumの値を元に、定義した名前(Fruits_Appleとか)を文字列として取得したいのですが、何か良い方法はないでしょうか? switch文等で分岐させて...という方法もありますが、enumの定義数が多くなるとコードが複雑になるので、シンプルな方法をさがしています。 enum Fruits{ Fruits_Apple, Fruits_Orange, Fruits_End }; void printFruits(Fruits fruits) { // ここで引数fruitsの値に応じて"Fruits_Apple"とか"Fruits_Orange"とかを // 文字列に代入したい std::string fruitsName = "Fruits_Apple"; }

  • 静的メンバ、ネストクラス、enumのアクセス

    下記のコードを試した所、(1)(4)は無事動作しますが、 (2)と(3)はコンパイルエラーになってしまいます。 初め、静的メンバの場合はnullでも動作する事にすごい驚いたんですが、 どこまでなら問題なく動作するかのラインがわからなくてこまっています。もしよろしければアドバイスをよろしくお願いします。 class Test{ static String A="A"; static class B{ static String val = "B"; } enum C{A,B,C} } enum D{A,B,C} class Sta{ public static void main(String[] args){ Test y=null; D y2 = null; (1)System.out.println(y.A); (2)System.out.println(y.B.val); (3)System.out.println(y.C.A); (4)System.out.println(y2.C); }}

専門家に質問してみよう