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 :

[utilisation de constante] erreur C2051


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut [utilisation de constante] erreur C2051
    ma declaration de constante (dans une classe, file :Icom.h)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class ICom: public CObject
    {
     
    public://RTC Type Size
    	static const int c_rtc_BOOLSIZE	;		
    	static const int c_rtc_UINTSIZE	;	
    	static const int c_rtc_UDINTSIZE;
    }
    mon initialisation de constante (hors d'une methode de classe, file ICom.cpp)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const int ICom::c_rtc_BOOLSIZE	=1;	
    const int ICom::c_rtc_UINTSIZE	=2;
    const int ICom::c_rtc_UDINTSIZE	=4;
    Erreur genérée (3x) C2051 : l'expression associée à case n'est pas une constante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    switch(_pLength)
    {
    	case ICom::c_rtc_BOOLSIZE:	//1 byte			
    			break;
     
    	case ICom::c_rtc_UINTSIZE:	//2 bytes
                               break;
     
    	case ICom::c_rtc_UDINTSIZE: //4 bytes
    			break;
     
    	default:				
    			break;
    }
    je ne comprend pas pourquoi le compilateur ne vois pas mes constantes comme des constantes...

    des idées ???

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Là, tu déclares des variables statiques constantes, mais le compilo ne sait pas, lorsqu'il compile ton switch, quelle est leur valeur.
    Si tu veux déclarer de "vraies" constantes, utilise directement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class ICom: public CObject
    {
    public://RTC Type Size
    	static const int c_rtc_BOOLSIZE	 = 1;		
    	static const int c_rtc_UINTSIZE	 = 2;	
    	static const int c_rtc_UDINTSIZE = 4;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Visual C++ 6 ? Si oui utilise plutôt un enum, le static const int ne passera jamais correctement.

  4. #4
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    Citation Envoyé par Laurent Gomila
    Visual C++ 6 ?
    VC++ 2003

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSTL] <c:if> Utilisation de constantes static
    Par ncachet dans le forum Taglibs
    Réponses: 3
    Dernier message: 30/01/2007, 14h32
  2. Utiliser une constante dans un texte
    Par 78alex78 dans le forum Langage
    Réponses: 1
    Dernier message: 08/01/2007, 15h23
  3. [XSLT] utilisation de constantes.
    Par the_edge dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/08/2006, 12h49
  4. Utiliser une constante dans une requête
    Par Nabouille dans le forum Access
    Réponses: 4
    Dernier message: 19/04/2006, 13h09
  5. [COM] Utilisation de COM() => Erreur Apache
    Par hisy dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 01/03/2006, 10h31

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