Posez votre question Signaler

C++ énumération [Résolu]

gilles81 68Messages postés 20 mai 2008Date d'inscription - Dernière réponse le 7 nov 2008 à 14:13
Bonjour,
j'ai crée une énumération enum E_POSITION {Torwart, Abwehr, Mittelfeld, Sturm} et je veux créer une méthode qui me permet d'initialiser E_POSITION, pour cela j'ai crée la méthode suivante:
bool SetPosition(E_POSITION position){
for(E_POSITON p = Torwart;p<=Sturm;p++){
...............
}
comment puis je récupérer les résultats de ma boucle et vérifier que le paramètre qui sera entrer figure bien dans mon énumération.
merci
Lire la suite 

C++ énumération »

16 réponses
Réponse
+0
moins plus
hum... Es tu sur qu'en C++ il faille préciser "enum" devant le type ???
Sinon, gilles, ton problème est mal posé, comprend pas ce que tu veux.
fiddy - 6 nov 2008 à 10:31
Oui en C, tu dois utiliser enum même pour la déclaration. En C++, c'est facultatif.
La Viande - 7 nov 2008 à 01:14
Ah ok, merci pour le renseignement.
gilles81 - 7 nov 2008 à 12:04
c++ énumération

salut ,
je reformule ma question.Je dispose d'une clase CSpieler ayant les attributs suivants:

char vorname[cMaxStrLength];
char nachname[cMaxStrLength];
char geboren[cMaxStrLength];
unsigned int groesse_cm;
unsigned int gewicht_kg;
unsigned int aktNummer;
char aktVerein[cMaxStrLength];
unsigned int aktVereinSeit_jahr;
E_POSITION aktPosition;

et une énumeration enum E_POSITION {Torwart, Abwehr, Mittelfeld, Sturm};

j'ai initialisé certains de ces attributs dans le constructeur:

CSpieler::CSpieler(char* vor, char* nachname, char* geboren, unsigned int groesse, unsigned int gewicht){
cMaxStrLength=20;
strncpy(vor,vorname,cMaxStrLength);
groesse_cm=groesse;
gewicht_kg =gewicht;
}

et pour d'autres tel que aktPosition je veux utiliser une setméthode:
bool SetPosition(E_POSITION position)
Ajouter un commentaire
Réponse
+0
moins plus
salut ,
je reformule ma question.Je dispose d'une clase CSpieler ayant les attributs suivants:

char vorname[cMaxStrLength];
char nachname[cMaxStrLength];
char geboren[cMaxStrLength];
unsigned int groesse_cm;
unsigned int gewicht_kg;
unsigned int aktNummer;
char aktVerein[cMaxStrLength];
unsigned int aktVereinSeit_jahr;
E_POSITION aktPosition;

et une énumeration enum E_POSITION {Torwart, Abwehr, Mittelfeld, Sturm};

j'ai initialisé certains de ces attributs dans le constructeur:

CSpieler::CSpieler(char* vor, char* nachname, char* geboren, unsigned int groesse, unsigned int gewicht){
cMaxStrLength=20;
strncpy(vor,vorname,cMaxStrLength);
groesse_cm=groesse;
gewicht_kg =gewicht;
}

et pour d'autres tel que aktPosition je veux utiliser une setméthode:
bool SetPosition(E_POSITION position)
Ajouter un commentaire
Réponse
+0
moins plus
où est le problème ?
Tu fait aktPosition=position; non ?
gilles81 - 7 nov 2008 à 12:23
et si le paramètre entré n'appartient pas a l'énumeration?
Ajouter un commentaire
Réponse
+0
moins plus
Tu sais que en fait, une enum c'est :
E_POSITION {Torwart=0, Abwehr=1, Mittelfeld=2, Sturm=3}
Donc, si tu passe unn entier inférieur à 0 et supérieur à 3, tu sais qu'il n'est pas bon.
Après, je ne connais pas de méthode directe genre E_POSITION.size() pour tester les bornes.
Ajouter un commentaire
Réponse
+0
moins plus
Quand on appelle une classe dans une autre avec "new" est on obligé comme dans java t'initialiser tous les parmètres du constructeur de la classe? Si je veux par exemple créer une instance de CSpieler dans une autre classe,suis-je obligé de: CSpieler c = new CSpieler("herve",.............)?ou exite t il un constructeur par défaut genre CSpieler c = new CSpieler().

Comment faire si je veux plutôt créer mon object dans une mèthode du genre

bool AddSpieler(char* vorname, char* nachname,
char* geboren, unsigned int groesse, unsigned int gewicht,
unsigned int nummer, char* verein, unsigned int seit,
E_POSITION position)

vu que dans mon constructeur CSpieler je n'ai pas initialisé tous les attributs

merci
Ajouter un commentaire
Réponse
+0
moins plus
Tu as raison, tu as par défaut un constructeur sans argument, mais il me semble (à vérifier, les règles ne sont pas évidente) qu'il n'est pas mis si tu définis un autre constructeur.
gilles81 - 7 nov 2008 à 13:09
comment crée donc mon objet avec une mèthode tel que déclarée la haut

merci
Ajouter un commentaire
Réponse
+0
moins plus
CSpieler a(...);
a.setPosition(...);
Je ne comprends pas ce qui te dérange.
gilles81 - 7 nov 2008 à 14:04
merci pour ton aide
Ajouter un commentaire
Réponse
+0
moins plus
J'espère que tu t'en sortira.
Je suis tout à fait pret à t'aider, mais je ne comprends vraiment pas où est ton souci. Peut être en étant plus concret, avec un morceau de code.
Ajouter un commentaire
Réponse
-1
moins plus
Bonjour Gilles81,

Pour commencer, je tiens à te dire que je refuse d'aider les végétariens. Bon je pars du principe que tu es amateur de bons filets: présomption d'innocence.

D'abord, ton type, ce n'est pas E_POSITION mais enum E_POSITION.

Ensuite, hélas je ne comprends pas ton problème...
Ajouter un commentaire
Ce document intitulé « c++ énumération » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook