Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un code simple qui plante à la compilation

Sujet résolu
    12 août 2007 à 3:59:03

    Je n'ose essayer de comprendre, en fait je pense que l'erreure est super simple mais que je ne la vois pas.
    Voici le code:
    1. #ifndef MAPOP
    2. #define MAPOP
    3. #include <string>
    4. using namespace std;
    5. int[2][512][512] mapOpen(string name);
    6. #endif

    EDIT:Oops, j'ai oublié l'erreure... :-°
    In file included from main.cpp:15:
    mapop.h:9: error: expected unqualified-id before '[' token
    mapop.h:9: error: expected `,' or `;' before '[' token
    main.cpp: In function `int SDL_main(int, char**)':
    main.cpp:72: error: `mapOpen' undeclared (first use this function)
    main.cpp:72: error: (Each undeclared identifier is reported only once for each function it appears in.)

    c'est simple, court...

    Est'ce que j'ai mal déclaré la fonction?
    • Partager sur Facebook
    • Partager sur Twitter
      12 août 2007 à 7:02:51

      1. int[2][512][512] mapOpen(string name);


      Bonjour ! o_O

      Bon alors plusieurs problèmes avec cette ligne :

      1) Un tableau multidimensionnel se déclare comme ceci :

      1. int monsupertableau[10][10][10];
      2. // A noter que les crochet se situent toujours après le nom du tableau, et non pas à coté du type.


      2) Une fois le problème 1) réglé, il faudra que tu m'expliques ce que ta fonction est censée retourner... Si jamais elle est censé retourner un tableau tridimensionnel, son prototype devrait être :

      1. int*** mapOpen(string name);

      // Si tu as un problème avec ca, n'hésite pas a poser des questions..
      • Partager sur Facebook
      • Partager sur Twitter
      Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
        12 août 2007 à 7:31:03

        @iNaKoll, ces deux types ne sont pas compatibles entre eux.

        @Manux, on ne peut pas renvoyer des tableaux de la sorte. Même à une seule dimension.
        Question.
        - Tu veux renvoyer une copie de ton tableau => encapsule dans une structure
        - Sinon, tu peux prendre ton tableau par paramètre sortant, ou tu peux jouer avec les typedef (vu que c'est une manipulation qui relève plus du C que du C++, je t'avoue que je n'ai pas de bonne réponse à cela)
        • Partager sur Facebook
        • Partager sur Twitter
        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
          16 août 2007 à 19:09:08

          tu les as pas mis dans une fontcion main ... c'est peut-etre ca le probleme ...
          • Partager sur Facebook
          • Partager sur Twitter
            16 août 2007 à 22:38:42

            Aucun rapport avec main. Ce n'est pas possible comme ça. Point. :p
            • Partager sur Facebook
            • Partager sur Twitter
            C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
              17 août 2007 à 19:43:16

              nan... j'ai une meilleure idée :)

              j'ai juste a faire un prototype int*** et dans la fonction mapOpen je fait des new(int**)[14] par exemple.

              en fait ca marche merci tout le monde.
              • Partager sur Facebook
              • Partager sur Twitter
                17 août 2007 à 23:35:15

                Ca sent les ennuis en perspective ...
                • Partager sur Facebook
                • Partager sur Twitter
                C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                  4 septembre 2007 à 18:54:35

                  Salut,
                  Non, tu n'as pas déclaré les bibliothèques principales.

                  1. #include <iostream>

                  Bien amicalement.

                  Gp2mv3
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 septembre 2007 à 22:25:44

                    0 rapport avec <iostream>.
                    <iostream> c'est pour disposer de std::cin, std::cout, std::cerr et std::clog. Et strictement rien d'autre.

                    Les bonnes réponses ont déjà été données.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

                    Un code simple qui plante à la compilation

                    × 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