Partage
  • Partager sur Facebook
  • Partager sur Twitter

initialiser un static Tableau [][] char

    13 octobre 2007 à 11:01:53

    Salut, j'aurais voulu savoir comment on initialiser un tableau de caractère qui est déclaré en static
    Voici la classe ou je le declare :
    1. class MembreEquipage
    2. {
    3. private:
    4.         char *m_nomMembre;
    5.         char *m_dateNaissance;
    6.         char *m_fonction;
    7. public:
    8.         MembreEquipage();
    9.         static tabFonction[][];
    10. };
    11. #endif

    et voici comment je procède dans le main pour l'initialiser ( char étant sur la meme ligne de MembreEquipage)
    1. char MembreEquipage::tabFonction[][]={"CAPITAINE","SECOND","OFF-MECA","OFF-RADIO","QUART-M","MATELOT","CUISINIER"};


    J'aurais voulu savoir comment l'on fait car j'ai testé pas mal de truc mais aucun ne fonctionnait.

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      13 octobre 2007 à 11:28:20

      Déjà, tu déclares tabFonction comme static mais ne lui donne pas de type :-° .

      Ensuite, utilise les outils du C++, ils sont tellement plus pratiques !

      1. static std::vector<std::string> tabFonction;
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        13 octobre 2007 à 11:52:53

        Une énumération ne serait-elle pas mieux?
        • Partager sur Facebook
        • Partager sur Twitter
          13 octobre 2007 à 11:55:02

          Merci des réponses.

          J'avais oublié de préciser que je ne pouvais pas utilise les outils std car c est pour l'école :(

          @hiura : je ne sais pas ce qu'est une énumération
          • Partager sur Facebook
          • Partager sur Twitter
            13 octobre 2007 à 12:57:25

            C'est vrai que j'ai fait un peu le fade sur les énumérations et ne cherchant pas sur google. Donc j'ai testé avec les énumérations mais on ne peut apparement pas mettre de tiret dans les éléments de la liste . Alors j'ai trouvé une solution en jouant avec des doubles pointeurs :-°

            1. class MembreEquipage
            2. {
            3. private:
            4. public:
            5.         MembreEquipage();
            6.         static vecFonction[];
            7.         static InitVecFonction(char **);
            8. };


            Déclaré comme ceci dans le main après les includes

            1. char * vecFonction[7];


            J'ai fait une fonction static qui va l'initialiser :
            1. MembreEquipage::InitVecFonction(char ** ptVec)
            2. {
            3.         *ptVec=new char[9];
            4.         strcpy(*ptVec,"CAPITAINE");
            5.         *(ptVec+1)=new char[6];
            6.         strcpy(*(ptVec+1),"SECOND");
            7.         *(ptVec+2)=new char[8];
            8.         strcpy(*(ptVec+2),"OFF-MECA");
            9.         *(ptVec+3)=new char[8];
            10.         strcpy(*(ptVec+3),"OFF-RADIO");
            11.         *(ptVec+4)=new char[7];
            12.         strcpy(*(ptVec+4),"QUART-M");
            13.         *(ptVec+5)=new char[7];
            14.         strcpy(*(ptVec+5),"MATELOT");
            15.         *(ptVec+6)=new char[7];
            16.         strcpy(*(ptVec+6),"CUISINIER");
            17. }


            Et je commence mon programme dans le main par
            1. MembreEquipage::InitVecFonction(&vecFonction[0]);


            J'ai peu être pas utiliser la méthode la plus facile, si vous en avez une autre plus facile je suis prenneur :p
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              13 octobre 2007 à 15:36:35

              Citation : Oc Quick

              C'est vrai que j'ai fait un peu le fade sur les énumérations et ne cherchant pas sur google. Donc j'ai testé avec les énumérations mais on ne peut apparemment pas mettre de tiret dans les éléments de la liste . Alors j'ai trouvé une solution en jouant avec des doubles pointeurs :-°

              Alors mets des '_'. L'effet est le même que je sache : t'y repérer.

              Ensuite tu as compilé ton code? Car pour moi ça ne devrais pas marcher. Rien qu'à la déclaration c'est pas clair (pour le codeur ça doit être clair sinon c'est con). Tu ne mets pas de type : static vecFonction[];

              Sinon l'initialisation des variables globales (à un espace ou non) ne se fait pas comme ça que je sache.

              Citation : Cyprien_

              Déjà, tu déclares tabFonction comme static mais ne lui donne pas de type :-° .

              +1

              Citation : Oc Quick

              J'avais oublié de préciser que je ne pouvais pas utilise les outils std car c'est pour l'école :(

              Il sont cons tes exercices....
              • Partager sur Facebook
              • Partager sur Twitter
                14 octobre 2007 à 18:04:18

                Salut,

                Citation : hiura

                Citation : Oc Quick
                J'avais oublié de préciser que je ne pouvais pas utilise les outils std car c'est pour l'école :(
                Il sont cons tes exercices....


                Ouais je trouve aussi :p

                Citation : hiura

                Citation : Cyprien_
                Déjà, tu déclares tabFonction comme static mais ne lui donne pas de type :-°


                On peut mettre le type ou ne pas le mettre au moment de la déclaration. C'est seulement au moment de l'initialisation que l'on est obligé de le préciser si je me souvient bien.

                Citation : hiura

                Alors mets des '_'. L'effet est le même que je sache : t'y repérer.

                Le prof ne nous le permet pas il est un peu tordu :-°

                Le code se compile sans erreurs ni warning.

                Merci pour vos réponses.
                • Partager sur Facebook
                • Partager sur Twitter

                initialiser un static Tableau [][] char

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown