The struct is as follows:
struct padData
{
enum buttonsAndAxes
{
select,
start,
ps
};
};
The object of the struct:
padData pad;
I am accessing this enum as follows:
printf ("\n%d", pad.buttonsAndAxes[0]);
Error:
error: invalid use of ‘enum padData::buttonsAndAxes’
Then, I tried:
printf ("\n%d", pad::buttonsAndAxes[0]);
Error:
error: ‘pad’ is not a class or namespace
Now what? Please guide.
Compiler: gcc version 4.5.0
EDIT 1:____________________________________
printf ("\nemit: %d", padData::(select)0);
results in:
error: expected unqualified-id before ‘(’ token
My aim is to fetch the word “select” through its value 0. How to achieve that? Also, is the word “select” a string?
The enum values become names in the scope of the class. So you would use
padData::selectfrom outside the class, or justselectfrom inside the class.In C++11 you can qualify the enumerators with the name of the enum, giving
padData::buttonsAndAxes::selectfrom the outside andbuttonsAndAxes::selectfrom inside.Printing the name of an enumerator is not easily done in C++, because the names are gone after compilation. You need to set up a table mapping the values to their strings by hand. If you don’t supply explicit values like in your example, you can simply use an array:
And then you index into that array:
If you want some more sophisticated approach, you can find a bunch of tricks in previous questions.