IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

erreur avec un énumération


Sujet :

C++

  1. #1
    Membre actif
    Profil pro
    Électro-mécano-informaticien à ses heures
    Inscrit en
    Août 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Électro-mécano-informaticien à ses heures

    Informations forums :
    Inscription : Août 2010
    Messages : 95
    Par défaut erreur avec un énumération
    Bonjour à tous,
    J'ai déclaré dans un fichier main.cpp, just avant la fonction main(), une énumération de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    enum TYPE_ENNEMI{ENNEMI_VERT, ENNEMI_ROUGE};
    Ainsi, dans une autre classe qui a besoin de cette énumération lors de l'utilisation d'une fonction, je fais appel à mon énumération de cette façon, à la suite des #include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    extern enum TYPE_ENNEMI{ENNEMI_VERT, ENNEMI_ROUGE};
    Du coup, j'ai une erreur de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error: a storage class can only specified for objects and functions
    Après plusieurs recherches effectuées, cette déclaration semble pourtant permise. à l'aide et merci d'avance!

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Autodidacte
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Autodidacte

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    Déclarer une constante énumérée c’est déclarer un nouveaux type et les valeurs qui seront admises aux variables de ce type. Quand tu utilise le mot-clé enum tu déclare un type de variables qui peut accueillir des nombres entiers et ensuite, entre les accolades, tu déclare des constantes symboliques qui auront des valeurs de 0, 1, 2 ,3… Il ne faut jamais déclarer plusieurs fois le même type dans une même portée d’un même programme.

    On s’assure que le type constante énumérée est déclaré une seule fois dans chaque fichier cpp (avec enum) et on peut déclarer des variables avec la portée qu’on désire (avec le nom du type).

    Pour ce qui est du mot-clé extern…(à utiliser pour la déclaration des variables et non du type) Si je ne m’abuse, ce n’est pas du C++ c’est du C. Il existe de meilleures façons de faire en C++.
    Voici comment j’utilise le mot-clé enum :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include <iostream>
     
    //Déclaration de type
    enum TYPE_ENNEMI{ENNEMI_VERT, ENNEMI_ROUGE};
     
    class QUELQUECHOSE
    {
    public:
    	//blablabla...
    	void Ennemi(TYPE_ENNEMI e){ m_ennemi = e;}
     
    private:
    	TYPE_ENNEMI m_ennemi;
    };
     
    //Déclaration de variable
    TYPE_ENNEMI ennemi;
     
    int main()
    {
    	ennemi = ENNEMI_VERT;
     
    	QUELQUECHOSE qqch;
    	qqch.Ennemi(ENNEMI_ROUGE);
     
    	if(ennemi == ENNEMI_VERT)
    		std::cout << "L'ennemi est vert." << std::endl;
     
    	return 0;
    }

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Si tu as besoin de partager un type entre plusieurs classe, alors il faut le définir dans un fichier d'en-tête (.h) inclus là où tu en aura besoin.
    extern permet de dire qu'une fonction ou une variable est définie dans une autre unité de compilation (.cpp). Et cela n'a rien à voir avec un type. Mais comme le dit Cbenlfun, ce type de partage de variable est plutôt à éviter.

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo