J'ai cherché mais je n'ai trouvé aucune solution à ce problème. J'ai un ENUM qui ne commence pas par « 0 » et d'autres valeurs sont pas non plus en séquence qui est comme,Comment obtenir l'index de la valeur dans Enum en C/C++
typedef enum{
a = 8,
b = 100,
c,
d = 1,
e = 9
}numberEnum;
Je veux obtenir l'index d'un élément dans ENUM comme celui-ci;
int myIndex = getIndex(a); // myIndex = 0
int myIndex1 = getIndex(d); // myIndex1 = 3
int myIndex2 = getIndex(b); // myIndex2 = 1
int getIndex(numberEnum e)
{
// some code here
return index;
}
Je ne devrais pas utiliser Array pour cette situation. Utiliser enum est un must. Y'a-t-il une quelconque façon de réussir cela? Merci pour votre aide.
Il n'y a aucun moyen direct de le faire. Mais quel est le but ici? Cherchez-vous à utiliser cette information à la compilation? –
On ne peut pas faire grand-chose ici. Vous pouvez soit maintenir une liste séparée d'indices d'énumérateur (peut-être 'std :: map', en supposant C++), soit utiliser des macros x (ou booster le préprocesseur) pour générer automatiquement cette liste. Le faire sans tableaux est stupide, mais vous pouvez générer un 'switch' avec x-macro ou quelque chose de similaire. –
HolyBlackCat
C ou C++? Ce n'est pas le même langage, et la solution sera différente. – Barmar