私が知っていること(cpp-programming-languageで読んだことから)から、サイズは「列挙子をとして表すことができない場合を除いて、その範囲を保持でき、sizeof(int)以下の整数型のサイズになります。 intまたはunsignedintとして」。
しかし、何らかの方法でサイズを定義することは可能ですか?たとえば、sizeofが自然語のサイズ(通常はunsigned long)である列挙型を使用したいと思います。
私が知っていること(cpp-programming-languageで読んだことから)から、サイズは「列挙子をとして表すことができない場合を除いて、その範囲を保持でき、sizeof(int)以下の整数型のサイズになります。 intまたはunsignedintとして」。
しかし、何らかの方法でサイズを定義することは可能ですか?たとえば、sizeofが自然語のサイズ(通常はunsigned long)である列挙型を使用したいと思います。
C ++ 11でできます:
enum /*class*/ MyEnum : unsigned long
{
Val1,
Val2
};
(列挙型のサイズは、古いスタイルenum
または新しいスタイルのいずれかに指定できますenum class
。)
引用した文の最後のフレーズを利用して、楽しいトリックで列挙型の最小サイズを増やすこともできます。
enum MyEnum
{
Val1,
Val2,
ForceSize = 0xFFFFFFFF // do not use
};
…これにより、列挙型が少なくとも32ビットであることが保証されます。
C ++ 11では、列挙型クラスを使用できます。このクラスでは、基になる型を指定できます。C++03には解決策はありません。