Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'argument .

Sujet résolu
    22 février 2017 à 0:13:12

    Bonsoir,

    je suis en train de coder une fonction mais j'ai un problème avec les argument ...

    L'appelle de la fonction :

    interaction(ecran, &typeMap, &slotAddContractOk, &slotItemInventory, &slotOkMap, &continuer, &addContractType, &showAddContract, &slotMapQuitOk, &showOptionChoice, &showMap, &menuInventory, &shopOpen, &itemMemory, &itemMemoryLock, &paper, &inHand, slotTradeOk, slotInventorySwitchOk, slotOkShop, slotOkInventory, slotOkOptionMap, &posS.x, &posS.y, &posC.x, &posC.y);

    Et les arguments dont nécessite la fonction :

    int interaction (SDL_Surface *ecran, int (*typeMap)[8], int (*slotAddContractOk)[2], int (*slotItemInventory)[24], int (*slotOkMap)[8], int *continuer, int *addContractType, int *showAddContract, int *slotMapQuitOk, int *showOptionChoice, int *showMap, int *menuInventory, int *shopOpen, int *itemMemory, int *itemMemoryLock, int *paper, int *inHand, int slotTradeOk[8], int slotInventorySwitchOk[2], int slotOkShop[6], int slotOkInventory[8], int slotOkOptionMap, int *Sx, int *Sy, int *Cx, int *Cy)

    Et j'ai l'erreur suivante :

    |1268|error: cannot convert 'Sint16* {aka short int*}' to 'int*' for argument '23' to 'int interaction(SDL_Surface*, int (*)[8], int (*)[2], int (*)[24], int (*)[8], int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int, int*, int*, int*, int*)'|

    Merci !

    Ps: hors sujet mais doit on faire des return 0; dans les fonctions void ?

    • Partager sur Facebook
    • Partager sur Twitter
    Ne pas se décourager !
      22 février 2017 à 0:44:26

      Salut,

      Heu, une fonction avec 23+ arguments ?

      Bin pas étonnant que tu t'embrouilles là-dedans. Franchement, 0 à 3 arguments c'est normal, 5 grand maximum.

      Plus, c'est qu'on s'y prend mal.

      En tout cas, le problème, c'est l'argument 23, tu envoies un pointeur sur Sint16 au lieu d'un pointeur sur int attendu.

      Bon courage...

      PS, une fonction void ne retourne rien par définition, 0 n'est pas void.

      -
      Edité par drx 22 février 2017 à 0:45:10

      • Partager sur Facebook
      • Partager sur Twitter

      Bonhomme !! | Jeu de plateforme : Prototype.

        22 février 2017 à 1:14:37

        C'est bon merci beaucoup ^^
        • Partager sur Facebook
        • Partager sur Twitter
        Ne pas se décourager !
          22 février 2017 à 2:31:37

          bonjour,

          23 arguments ... :waw:

          avant de se frotter à la SDL il faut commencer par lire un chapitre sur les structures et un autre sur la conception en général ...

          • Partager sur Facebook
          • Partager sur Twitter
          First solve the problem. Then, write the code. ~ John Johnson
            22 février 2017 à 7:50:18

            Voilà un nouveau sujet qui m'interesse. Je programme en utilisant le type abstrait de donnee qui me permet de bien organisé mes programmes et les construires sur papiers avant.


            Mais y a t'ils des bons livres ou tutoriel sur la conception avec le langage C ?

            Pour m'amelioré et decouvrir de nouvelles choses.

            Quand je dis langage C c'est par rapport au paradigme, le TAD n'etant pas vraiment de la programmation orientée objet.

            -
            Edité par Proteiforme 22 février 2017 à 10:03:01

            • Partager sur Facebook
            • Partager sur Twitter
              22 février 2017 à 9:15:44

              C'est vraiment trop ? Je devrais faire plusieurs fonctions ou c'est juste difficile a s'y retrouver mais pas vraiment un problème ?
              • Partager sur Facebook
              • Partager sur Twitter
              Ne pas se décourager !
                22 février 2017 à 9:53:44

                Sachajoub a écrit:

                C'est vraiment trop ? Je devrais faire plusieurs fonctions ou c'est juste difficile a s'y retrouver mais pas vraiment un problème ?

                Tu es celui qui a écrit le code, et cette liste sans fin, t'as fait commettre une erreur de type. Imagine ce que ça sera dans 6 mois quand tu reprendra ton code ou pour la pauvre âme qui ne l'a pas écrit lui même... Oui, 23 c'est trop.

                • Partager sur Facebook
                • Partager sur Twitter
                  22 février 2017 à 9:56:11

                  Sachajoub a écrit:

                  C'est vraiment trop ? Je devrais faire plusieurs fonctions ou c'est juste difficile a s'y retrouver mais pas vraiment un problème ?


                  Non c'est vraiment BEAUCOUP trop !

                  Tu devrais surtout organiser tes différentes variables dans des structures de données. Et de cette façon passer à la fonction les structures contenant les variables dont elle a besoin.

                  Mais ne te contente pas de créer une super sutructure qui contient toutes tes varia, ça doit suivre un raisonnement logique exemple :

                  // la fonction check collision verifie la colision entre deux entite
                  
                  // sans structure :
                  int check_col(int posXE1, int posYE1, int sizeXE1, int sizeYE1, int posXE2, int posYE2, int sizeXE2, int sizeYE2);
                  
                  // avec une structure entity du genre
                  struct s_entity {
                  int posX;
                  int posY;
                  int sizeX;
                  int sizeY;
                  };
                  
                  int check_col(struct s_entity *E1, struct s_entity *E2);
                  
                  
                  // Et encore on peux imaginer encapsuler une structure coordonne a l'interieur d'entity
                  struct s_coord {
                  int x;
                  int y;
                  };
                  
                  struct s_entity {
                  struct s_coord pos;
                  struct s_coord size;
                  }

                  Avec ce genre de découpage tu pourras (dans mon exemple), ne passer que la structure s_coord si la fonction n'a besoin que de ça, s_entity si ele a besoin de plus, etc ...

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Si debugger, c’est supprimer des bugs, alors programmer ne peut être que les ajouter - Edsger Dijkstra
                    22 février 2017 à 18:56:15

                    MAIS OUI DES STRUCTURES ! C'est pile ce qu'il me faut mais, comment ça marche ? Il y a un cour sur les structure ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Ne pas se décourager !
                      22 février 2017 à 19:03:57

                      T'es passé trop vite à la SDL :magicien:

                      Beaucoup trop vite...

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                        23 février 2017 à 16:16:02

                        Merci ;)

                        EDIT: bonjour j'ai un nouveau problème ... je voulais envoyer ma structure en paramétre d'une fonction mais je ne sais pas comment m'y prendre =/ Merci de bien vouloir m'aider.

                        afficheTextInfo(ecran, &stock);
                        void afficheTextInfo (SDL_Surface* ecran,ressources *stock)

                        J'ai tenté ça mais ça ne marche pas ...

                        EDIT: Bon ce sujet devient hors sujet je vais crée un nouveau sujet pour mon problème. Merci beaucoup !

                        -
                        Edité par Sachajoub 23 février 2017 à 20:14:26

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Ne pas se décourager !

                        Problème d'argument .

                        × 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