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 :

Struct, l'ordre des éléments


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Struct, l'ordre des éléments
    Là j'ai un problème on ne peut plus énervant.

    J'ai défini un struct de la façon suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct stack
    {
        int type;
        Vect3f* pvector;
        Vect3f vector;
        float speed;
        float angle;
        stack* next;
    };
    et j'ai remarqué que lors d'un
    stack* new_stack = new stack;
    le int type n'est pas rempli comme je le souhaite, et je ne peux même pas y faire une affectation du style new_stack->type = 2;

    Et bizarrement, quand je place le int type tout en bas de la liste des éléments, ça marche... En revanche le Vect3f* pvector ne marche plus... Et ce n'est même pas que le premier élément qui flanche, l'ordre donne des résultats complétement quelconque suite à quelque test. Si quelqu'un pouvait me dire pourquoi .. ?

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut, et bienvenue sur le forum.

    Normalement, l'ordre dans lequel tu déclare les différents champs d'une structure n'a strictement rien à voir.

    Cependant, une bonne habitude à prendre est de "trier" les différents champs.

    Ainsi, ta structure serait sans doute plus simple à manipuler (et surtout à comprendre lors de la lecture), bien que cela ne change normalement rien au niveau de l'utilisation de cette structure, si elle se composait sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct stack
    {
        int type;
        float speed;
        float angle;
        Vect3f vector;
        Vect3f* pvector;
        stack* next;
    };
    Cependant, je me pose réellement la question de savoir à quoi peuvent bien correspondre la classe Vect3f et les champs vector et pvector...

    S'il s'agit d'assigner pvector à l'adresse de vector, j'aurais tendance à demander dans quel but

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par griffin76 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct stack
    {
        int type;
        Vect3f* pvector;
        Vect3f vector;
        float speed;
        float angle;
        stack* next;
    };
    Tu n'as pas défini de créateur à ta struct, donc par défaut, le contenu n'est pas initialisé (type, pvector, ... peuvent avoir n'importe quelles valeurs).
    Pour pouvoir t'aider, je pense qu'un bout de code nous serait utile.
    --
    Jérémie

  4. #4
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par jfouche Voir le message
    Tu n'as pas défini de créateur à ta struct
    Le bon terme, c'est constructeur

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par Florian Goo Voir le message
    Le bon terme, c'est constructeur
    Hé hé, tu as raison. C'est marrant, je n'avais plus le terme en tête (j'étais sur du python juste avant, et j'étais bloqué sur __init__).
    --
    Jérémie

  6. #6
    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
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par griffin76 Voir le message
    Là j'ai un problème on ne peut plus énervant.

    J'ai défini un struct de la façon suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct stack
    {
        int type;
        Vect3f* pvector;
        Vect3f vector;
        float speed;
        float angle;
        stack* next;
    };
    et j'ai remarqué que lors d'un
    stack* new_stack = new stack;
    le int type n'est pas rempli comme je le souhaite, et je ne peux même pas y faire une affectation du style new_stack->type = 2;

    Et bizarrement, quand je place le int type tout en bas de la liste des éléments, ça marche... En revanche le Vect3f* pvector ne marche plus... Et ce n'est même pas que le premier élément qui flanche, l'ordre donne des résultats complétement quelconque suite à quelque test. Si quelqu'un pouvait me dire pourquoi .. ?
    Bonjour et bienvenu,
    Ca sent à plein nez l'écrasement mémoire. Ton premier champs semble être écrasé. Peux-tu poster tout ce qui il y autour du code incriminé?

Discussions similaires

  1. [C#] Inverser l'ordre des éléments d'une Hashtable
    Par lancer83 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 31/08/2006, 20h03
  2. [Struts] ordre des éléments dans un tableau de propriétés
    Par zais_ethael dans le forum Struts 1
    Réponses: 2
    Dernier message: 09/05/2006, 15h54
  3. [XSL][débutant]trié l'ordre des éléments d'un fichier xml
    Par pistache42 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/04/2006, 10h37
  4. [XSL] Ordre des éléments présentés
    Par Cupidon dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/01/2006, 13h58
  5. [C#] ordre des éléments dans un datagrid
    Par liliprog dans le forum ASP.NET
    Réponses: 3
    Dernier message: 19/09/2005, 16h31

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