Partage
  • Partager sur Facebook
  • Partager sur Twitter

ERROR Tableau double Multi-dimensionnel

    29 janvier 2019 à 18:20:17

    Voilà donc ce code est censé remplir mon tableau 
    string tabPosition[3][3];

    Seulement mon débugger crache ses poumons quand je compile !

    bool UploadPosition(string& tabPosition) {
        ifstream Positions("Position.txt");
        if(Positions){
            string ligne;
            for (int i = 0; i<3; i++){
                for (int u = 0; u<3; u++){
                    getline(Positions, ligne);
                    tabPosition[i][u] = ligne;
                }
            }
            return true;
        }
        else{
            cout << "ERROR : uploading position failed. Please restart.";
            return false;
        }
    }

    Le débugger me signale la ligne 

    tabPosition[i][u] = ligne;

    "ERROR : invalide types 'char [int]' for array subscript"

    Je ne parviens pas à comprendre mon erreur, certainement de syntaxe.

    Un peu d'aide me serait donc la bienvenue ! :D

    -
    Edité par Svartorm 29 janvier 2019 à 18:26:23

    • Partager sur Facebook
    • Partager sur Twitter

    If it doesn't work, just keep trying

      29 janvier 2019 à 23:41:27

      Bonjour,

      Le compilateur dit que tabPosition est une string et que l'on ne peut pas écrire (une_string)[i][u] qui correspond à faire (un_char)[u].
      On voit bien le type de tabPosition dans le paramètre de la fonction ligne 1.

      • Partager sur Facebook
      • Partager sur Twitter

      En recherche d'emploi.

        30 janvier 2019 à 7:39:03

        C'est ce que je me suis dit au début mais même si je change les types il me met l'erreur. Ex: si j'écris"int tabPosition[3][3];", il me signalera quand-même la même ligne pour "ERROR : invalide types 'int [int]' ..." .

        Incompréhensible !

        • Partager sur Facebook
        • Partager sur Twitter

        If it doesn't work, just keep trying

          30 janvier 2019 à 9:17:45

          Ce n'est pas le débugger qui affiche des messages, mais le compilateur,  qui ne fait que signaler les incohérences qu'il détecte dans ton code.

          Le débugger, lui, est un outil qui surveille l'exécution.

          Il ne s'agit pas de changer les trucs au hasard en espérant que ça va marcher.

          En parlant d'incohérences :
          • tu déclares une variable comme un tableau de 3x3 chaines
          • dans ta fonction, tu passes en paramètre une seule chaine
          bool UploadPosition(string& tabPosition) {

          -
          Edité par michelbillaud 30 janvier 2019 à 9:19:46

          • Partager sur Facebook
          • Partager sur Twitter
            30 janvier 2019 à 11:25:52

            Et pourquoi un tableau "C-style", et pas std::array ?
            • Partager sur Facebook
            • Partager sur Twitter
              30 janvier 2019 à 14:10:38

              La pente savonneuse :

              On commence par lâcher les vieilleries héritées du C pour faire du C++ moderne, et on finit par lâcher C++ pour un vrai langage de programmation moderne ?

              • Partager sur Facebook
              • Partager sur Twitter
                30 janvier 2019 à 14:24:18

                michelbillaud a écrit:

                Ce n'est pas le débugger qui affiche des messages, mais le compilateur,  qui ne fait que signaler les incohérences qu'il détecte dans ton code.

                Le débugger, lui, est un outil qui surveille l'exécution.

                Il ne s'agit pas de changer les trucs au hasard en espérant que ça va marcher.

                En parlant d'incohérences :

                • tu déclares une variable comme un tableau de 3x3 chaines
                • dans ta fonction, tu passes en paramètre une seule chaine
                bool UploadPosition(string& tabPosition) {

                -
                Edité par michelbillaud il y a environ 4 heures


                C'est vrai que j'ai tendance a appelé tout ce qui corrige mon code le debugger, à tort bien sur:-°

                Mais du coup comment je déclare mon tableau 3*3 dans ma fonction ? 

                Sinon, je peut toujours changer pour un tableau dynamique.

                En tout cas merci pour vos retour !:lol:

                • Partager sur Facebook
                • Partager sur Twitter

                If it doesn't work, just keep trying

                  30 janvier 2019 à 15:24:13

                  Du coup, il s'agit de passer un tableau 3x3 comme _paramètre_ de la fonction, pas  "dans" la fonction.

                  Ca ne devrait pas poser de difficultés, si tu essayais.

                  Du coup.

                  -
                  Edité par michelbillaud 30 janvier 2019 à 15:25:10

                  • Partager sur Facebook
                  • Partager sur Twitter

                  ERROR Tableau double Multi-dimensionnel

                  × 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