Is there a way to find the maximum and minimum defined values of an enum in c++?
Not automatically, but you can add artificial enum values to signify min and max values, e.g.
typedef enum {start_of_colors=-1, eRed, eWhite, eBlue, eGray,
end_of_colors} eListOfTags;
for (eListOfTags i = start_of_colors+1; i < end_of_colors; i++) {
....
}
you don't even need them, what I do is just I say for example if you have:
enum Name{val0,val1,val2};
if you have switch statement and to check if the last value was reached do as the following:
if(selectedOption>=val0 && selectedOption<=val2){
//code
}
No, there is no way to find the maximum and minimum defined values of any enum in C++. When this kind of information is needed, it is often good practice to define a Last and First value. For example,
enum MyPretendEnum
{
Apples,
Oranges,
Pears,
Bananas,
First = Apples,
Last = Bananas
};
There do not need to be named values for every value between First
and Last
.
enum My_enum
{
FIRST_VALUE = 0,
MY_VALUE1,
MY_VALUE2,
...
MY_VALUEN,
LAST_VALUE
};
after definition, My_enum::LAST_VALUE== N+1
No, not in standard C++. You could do it manually:
enum Name
{
val0,
val1,
val2,
num_values
};
num_values
will contain the number of values in the enum.
No. An enum in C or C++ is simply a list of constants. There is no higher structure that would hold such information.
Usually when I need this kind of information I include in the enum a max and min value something like this:
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
See this web page for some examples of how this can be useful: Stupid Enum Tricks