24

私が知っていること(cpp-programming-languageで読んだことから)から、サイズは「列挙子をとして表すことができない場合を除いて、その範囲を保持でき、sizeof(int)以下の整数型のサイズになります。 intまたはunsignedintとして」。

しかし、何らかの方法でサイズを定義することは可能ですか?たとえば、sizeofが自然語のサイズ(通常はunsigned long)である列挙型を使用したいと思います。

4

2 に答える 2

54

C ++ 11でできます:

enum /*class*/ MyEnum : unsigned long
{
    Val1,
    Val2
};

(列挙型のサイズは、古いスタイルenumまたは新しいスタイルのいずれかに指定できますenum class。)

引用した文の最後のフレーズを利用して、楽しいトリックで列挙型の最小サイズを増やすこともできます。

enum MyEnum
{
    Val1,
    Val2,
    ForceSize = 0xFFFFFFFF // do not use
};

…これにより、列挙型が少なくとも32ビットであることが保証されます。

于 2012-08-25T21:06:23.853 に答える
4

C ++ 11では、列挙型クラスを使用できます。このクラスでは、基になる型を指定できます。C++03には解決策はありません。

于 2012-08-25T21:06:25.800 に答える