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 :

Structure et class


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Structure et class
    Salut tout le monde voila je rencontre un petit problème que je ne comprend pas.

    je définis donc ma structure tel que
    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
     
          struct DATA {
                char    nullbyte[53];
                int     nbroot;
                char    magic1[1];
                int     time;
                char    magic2[1];
                int	    vertexSize;
                char    magic3[2];
                int     nbVertex;
                int     null1;
                float	vertexArray[vertexSize];
                char    magic4[1];
                int	    normalSize;
                char    magic5[2];
                int     nbnormal;
                int     null2;
                float	normalArray[normalSize];
                char    magic6[1];
                int	    texelSize;
                char    magic7[2];
                int     nbtexel;
                int     null3;
                float	texelArray[texelSize];
            };
    mais il me dis que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     "error: invalid use of non-static data member 'Kfile::DATA::vertexSize'
    error from "float	vertexArray[vertexSize];"
    Je ne comprend pas l'erreur. Il me dis qu'il ne connais pas la variable?
    Bref merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par Gr4ph0s Voir le message
    Salut tout le monde voila je rencontre un petit problème que je ne comprend pas.

    je définis donc ma structure tel que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          struct DATA {
                int	    vertexSize;
                float	vertexArray[vertexSize];
                int	    normalSize;
                float	normalArray[normalSize];
                int	    texelSize;
                float	texelArray[texelSize];
            };
    Hello,

    Aucun de tes 3 int n'est une constante de compilation, il est donc impossible d'avoir des tableaux de cette taille (car non connue).

    Tu peux utiliser des vector à la place, ou rendre ta structure template pour fixer les tailles des tableaux, ou encore utiliser des (smart) pointers à la place de tes tableaux (et donc gérer la mémoire toi même).

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 36
    Par défaut
    salut,

    Il me semble que si tu fait une initialisation de tes "int", pour ensuite les faire changer par un cin ou un appel de fonction, sa devrait etre bon, mais si la case mémoire ne contient pas de valeur, l'ordinateur ne peut pas créer un tableau de taille " #vide " .

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    Citation Envoyé par tom250908 Voir le message
    salut,

    Il me semble que si tu fait une initialisation de tes "int", pour ensuite les faire changer par un cin ou un appel de fonction, sa devrait etre bon, mais si la case mémoire ne contient pas de valeur, l'ordinateur ne peut pas créer un tableau de taille " #vide " .
    C'est juste totalement faux.
    L'utilisation d'une variable comme taille de tableau c'est un VLA (variable length array), c'est du mauvais C, pas une bonne pratique, d'une certaine norme.
    Dans tous les cas, il est strictement interdit d'avoir un nom de variable comme ça dans la déclaration (et d'ailleurs le compilateur t'insulte pour te le rappeler!), rappelons qu'une variable n'existe pas une fois compilée, ce ne sont que des mots-clés pour programmer.
    Tu as donc le choix entre utiliser un vector ou un tableau/pointeur.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 36
    Par défaut
    " il me semble [...]"
    Bon, ceci étant dit, c'est vrai que certain compilateur n'accepte pas, mais j'ai déjà réussi à faire ce genre de chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int taille = 5;
    int tableau[taille];
    qu'est-ce qui empèche de modifier la taille par une saisie ?

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    En C99, ça passe, ce sont les VLA.
    Mais ce que tu montres et la structure de départ n'ont rien à voir

Discussions similaires

  1. Structure ou classe ?
    Par progfou dans le forum C++
    Réponses: 5
    Dernier message: 01/10/2007, 14h27
  2. Schéma structure des classes
    Par delma dans le forum EDI et Outils pour Java
    Réponses: 8
    Dernier message: 29/11/2006, 16h52
  3. [log4j] structurer par classes
    Par frouge dans le forum Logging
    Réponses: 4
    Dernier message: 25/09/2006, 11h24
  4. Structure de classe dynamique
    Par amel666 dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2006, 09h13
  5. structure de class?
    Par kiko69 dans le forum C++
    Réponses: 4
    Dernier message: 13/03/2005, 14h30

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