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

SL & STL C++ Discussion :

Tableau de string


Sujet :

SL & STL C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut Tableau de string
    Hello,

    Il faudrait que je remplisse un tableau de string dans un struct.
    Voilà le struct:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    struct buttonObject
    {
    	float width;
    	float height;
    	float posX;
    	float posY;
    	bool hit;
    	float color[4];
    	string button;
    	string titles[30];
    };
    Le prototype de la fonction qui permet de l'initialiser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void initButtonObject(int num, string buttonType, const string &title);
    Et la fonction:
    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
     
    void Button::initButtonObject(int num, string buttonType, const string &title)
    {
    	button[num].color[0] = 1.0f;
    	button[num].color[1] = 1.0f;
    	button[num].color[2] = 1.0f;
    	button[num].color[3] = 1.0f;
    	button[num].width = 80.0f;
    	button[num].height = 40.0f;
    	button[num].posX = 0.0f;
    	button[num].posY = 0.0f;
    	button[num].hit = false;
    	button[num].button = buttonType;
    	button[num].titles[num] = title;
    }
    Je l'appelle comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    simpleBtn.initButtonObject(loop, "SIMPLE", menuTitles[loop]);
    menuTitles est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    static string menuTitles[MENU];
    et il y a actuellement 3 string dedans. Quand je fais débug, il y a que le premier string qui passe dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button[num].titles[num] = title;
    Est-ce que vous auriez une idée pourquoi?

    Merci!

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    les tableaux "c-style" ne se copient pas avec l'opérateur d'affectation (=), mais il faut faire une boucle et copier chaque élément.

    Il est cependant conseillé de préférer, surtout pour ce type d'utilisation, un conteneur de la STL (typiquement un vector).
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Tout d'abord, je ne vois l'utilité d'avoir une table de string 'titles[30]' dans la structure buttonObject puisque cette même structure est mise dans un tableau dans la classe Button.

    Ensuite, tu utilises l'index 'num' pour accéder à un bouttonObject (button[num]) et également pour indéxer le tableau de string 'title'. Ce me semble redondant.

    Enfin, ce que tu constates en debug, c'est que seule le premier string passe, ça ma parais normal car dans la deuxième itération, le titre sera inscrit dans la deuxième string du tableau title.

    Pour r0d : les tableaux 'c-style' se copient parfaitement avec l'opérateur '=' par défaut. Ceci est valide même pour des tableaux d'objet de type string par exemple, les constructeurs de copies adéquate seront appelé.

  4. #4
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par SoniX Voir le message
    les tableaux 'c-style' se copient parfaitement avec l'opérateur '=' par défaut. Ceci est valide même pour des tableaux d'objet de type string par exemple, les constructeurs de copies adéquate seront appelé.
    Merci beaucoup pour la correction. Et pour votre contribution en entier d'ailleurs.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par SoniX Voir le message
    Bonjour,

    Tout d'abord, je ne vois l'utilité d'avoir une table de string 'titles[30]' dans la structure buttonObject puisque cette même structure est mise dans un tableau dans la classe Button.

    Ensuite, tu utilises l'index 'num' pour accéder à un bouttonObject (button[num]) et également pour indéxer le tableau de string 'title'. Ce me semble redondant.
    OUI! Effectivement j'ai pas remarqué mon erreur! Merci beaucoup pour la correction! Maintenant j'ai le fonctionnement que je souhaite avoir.

    Merci r0d et SoniX!

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

Discussions similaires

  1. Tester si une String fait partie d'un tableau de String
    Par laloi dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/04/2005, 16h47
  2. [J2SE] tableau de string
    Par Jules82 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 17/03/2005, 14h35
  3. Ranger un tableau de String dans ma HashMap
    Par jeyce dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 26/08/2004, 22h41
  4. [Collections] Conversion de Vector en tableau de String
    Par java_math dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 06/06/2004, 12h55
  5. [Collections] Tableau de String
    Par gexti dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 02/06/2004, 15h42

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