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 :

static const et taille de tableau


Sujet :

C++

  1. #1
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut static const et taille de tableau
    Bonjour,
    j'essaye d'utiliser un attribut déclaré en "static const" comme taille de tableau.
    Dans le header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private:
    	// --- ATTRIBUTES --- //
    	/*! maximum size of the buffer, specified by the NMEA protocol */
    	static const int m_MaxSize;
    	/*! buffer of the frame. It contains the Ascii coded chars of the 
                    NMEA frame . */
    	char m_Frame[m_MaxSize];
    dans le fichier d'implémentation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    const int GPSFrame::m_MaxSize = 80;
    j'utilise Visual C++ 6.0 avec XP, l'erreur remontée :

    d:\continuus\sources\engine\gps\gpsframe.h(24) : error C2057: expected constant expression
    d:\continuus\sources\engine\gps\gpsframe.h(24) : warning C4200: nonstandard extension used : zero-sized array in struct/union
    alors peut être qu'il est évident que cela ne peut marcher, mais moi un truc m'échappe...

  2. #2
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il faut déclarer et définir ta constante en un seul coup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static const int m_MaxSize = 80;
    Mais je crois que ça ne marchera quand même pas avec VC6

  3. #3
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    effectivement, ça ne marche pas...
    il me reste que les #define, tant pis !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Points : 473
    Points
    473
    Par défaut
    Le 'enum hack' est quand même préférable à un #define. Ca devrais passer avec VC 6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct A
    {
      enum {N=80};
    };
     
    int main()
    {
      int array[A::N];
    }
    Cela dit, il me semble que les membres constants étaient correctements pris en compte dans VC6. A condition de fixer leur valeur dans le fichier d'implémentation et non dans l'en-tête (ancienne norme).

Discussions similaires

  1. Réponses: 69
    Dernier message: 12/09/2014, 14h47
  2. static const en tableau ?
    Par Glandelf dans le forum Débuter
    Réponses: 10
    Dernier message: 10/12/2013, 10h57
  3. Réponses: 2
    Dernier message: 30/10/2006, 16h40
  4. Réponses: 1
    Dernier message: 23/09/2006, 00h41
  5. [VBA-E] taille du tableau non connu
    Par fab101 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 26/07/2005, 15h51

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