In this blog post, you will learn how to change the integer type used by an enum C++. One point you should remember is that what I will explain here only applies to C++11 or above. You cannot do this in C++98/03.
So without wasting time let us see a syntax to how we can change the integer type used by an enum.
//1. Unscoped enum:
enum[identifier][:type]
{
enum-list
};
//2. Scoped enum:
enum [class|struct] [identifier] [:type]
{
enum-list
};
Where,
identifier: The type name given to the enumeration.
type: The underlying type of the enumerators.
enum-list: Comma-separated list of the enumerators in the enumeration.
class/struct: By using the class or struct keyword in the declaration, you specify the enum is scoped.
Now it is time to see the example code to understand the above concepts.
#include <iostream>
using namespace std;
enum ETest1 : uint8_t
{
eA = 1,
eB,
eC
};
enum ETest2 : uint16_t
{
eD = 1,
eE,
eF
};
enum ETest3 : uint32_t
{
eG = 1,
eH,
eI
};
int main()
{
cout << "Size of ETest1 = " << sizeof(ETest1) << endl;
cout << "Size of ETest2 = " << sizeof(ETest2) << endl;
cout << "Size of ETest3 = " << sizeof(ETest3) << endl;
return 0;
}
Output:
Size of ETest1 = 1 Size of ETest2 = 2 Size of ETest3 = 4