1

私はC++、特にC ++ 11の初心者なので、これを使用する必要があるため、「enum」と「enumclass」に関するいくつかの質問が出てきました。

列挙が宣言された後に値を割り当てることはできますか?

enum MyEnum;
MyEnum::HELLO = 0;
MyEnum::WORLD = 1;

数値に値を割り当てることはできますか?(例:ミエナム:: 0 = 2)

enum MyEnum;
MyEnum::0 = 16;
MyEnum::1 = 24;
MyEnum::3 = 64;

構造体またはクラスを基になる型として使用する場合、列挙型クラスはどのように機能しますか?

列挙型のエントリは、構造体/クラスの有効なインスタンスになりますか?

class Test {
    private int v = 0;
    Test(int v) {
        this->v = v;
    }
};

enum class MyEnum : Test {
    Test0 = new Test(0),
    Test1 = new Test(1),
};

トピックを検索したときに、次のリンクが見つかりました。

ご覧のとおり、いくつか質問があります。

4

2 に答える 2

4

いいえ、できません。

ただし、宣言後に列挙型の定義を次のように指定できます。

enum MyEnum; //declaration

enum MyEnum  //definition
{
  HELLO = 0,
  WORLD = 1;
};

数値に値を割り当てることはできますか?

いいえ、それは意味がありません。数値にはすでにがあります。一定です。


C++でのプログラミングに関する入門書を入手してください。ここにいくつかの推奨事項があります:

于 2013-01-06T13:43:25.777 に答える
2

まず第一に、C++で値を割り当てることはできません。以下は違法です。

42 = 23;

また、ほぼ同じ理由で、列挙型の値を割り当てることもできません。

さらに、列挙型の宣言後に列挙型の値を使用することもできません(つまり、記述できません)。定義auto x = enum_name::name;後にのみ使用できます。列挙型の名前のみを使用できます。

数値に値を割り当てることはできますか?

これが何を意味するのかはわかりませんが、前に言ったことを除けば、とにかくその構文は違法です。つまり、を書き込んで2番目の列挙値にアクセスすることはできませんenum_name::1

構造体またはクラスを基になる型として使用する場合、列挙型クラスはどのように機能しますか?

カスタム型を基になる型として使用することはできず、組み込みの整数型のみを使用できます。

于 2013-01-06T13:46:00.920 に答える