Partage
  • Partager sur Facebook
  • Partager sur Twitter

pointeur sur ue structure

    19 avril 2006 à 17:43:54

    Salut tout le monde!
    Un petit problème m'embête lol
    En fait j'ai créé une struct vars contenant des sous-struct, dont l'une de type button : newGame.
    j'ai donc : vars.newGame.valeur

    Je veux passer cette struct a une fonction :
    déclaration : fonction(button *bouton) et je l'appelle par fonction(&vars.newGame).

    Je peux donc accéder a mes sous variables sans problème, sauf une :/
    en fait c'est un TTF_Font* font. Je l'appelle par bouton->font comme mes autres
    variables, mais il retourne toujpurs 0!
    Je l'ai bien initialisé, j'ai vérifié sa valeur, qui est bien une adresse.

    Donc?

    J'espère que je suis clair lol.

    Merci d'avance!

    Pour ceux qui auraient pas compris, la question est : comment accéder a l'adresse d'un pointeur défini dans une struct dans une fonction?
    • Partager sur Facebook
    • Partager sur Twitter
      19 avril 2006 à 18:39:10

      Citation : Arkhiall

      Pour ceux qui auraient pas compris, la question est : comment accéder a l'adresse d'un pointeur défini dans une struct dans une fonction?


      C'est pas clair du tout. Tu peux montrer un exemple compilable réduit au minimum qui montre le défaut ?
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        19 avril 2006 à 18:46:41

        Je m'en doutais :D
        headers.h :

        typedef struct {
            int mouseOver, mouseDown;
            int x, y, w, align;
            char text[50];
            Uint32 textColor, bgColor;
            TTF_Font* font;
        }buttons;

        typedef struct {
            buttons newGame;
        }vars;

        void createButton(SDL_Surface* screen, buttons* button);


        affichage.c : (les valeurs de la struct ont été initialisées avant et font = TTF_OpenFont() a bien marché)

        void createButton(SDL_Surface* screen, buttons* button) {
            if(!TTF_WasInit())
                TTF_Init();

            SDL_Color colorText;
            colorText.r = (button->textColor & SDL_MapRGB(screen->format,255,0,0)) >> 16;
            colorText.g = (button->textColor & SDL_MapRGB(screen->format,0,255,0)) >> 8;
            colorText.b = (button->textColor & SDL_MapRGB(screen->format,0,0,255));

            SDL_Rect coord = {0};
            coord.x = button->x;
            coord.y = button->y;

            SDL_Surface* textSurface = NULL;
            textSurface = TTF_RenderText_Blended(buttons->font, button->text, colorText);
            SDL_BlitSurface(textSurface, NULL, screen, &coord);
            SDL_FreeSurface(textSurface);

            if(TTF_WasInit())
                TTF_Quit();
        }


        et dans le main j'appelle la fonction par :

        createButton(screen, &vars.newGame);


        Dans ma fonction si je laisse comme ca ca bug! (pas à la compilation mais lors de l'exécution).
        Or si je refais un TTF_Font* font = machin et que je remplace boutons->font par ce font la, pas de problème!
        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2006 à 18:58:42

          Essaye d'appeler ta fonction comme ca vars.(&newGame) Si ca marche comme ca c'est un miracle... mais essaye quand meme on sait jamais ^^
          • Partager sur Facebook
          • Partager sur Twitter
          Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
            19 avril 2006 à 19:01:29

            Citation : iNaKoll

            Essaye d'appeler ta fonction comme ca vars.(&newGame) Si ca marche comme ca c'est un miracle... mais essaye quand meme on sait jamais ^^


            Marche pas. C'est pas du hasard le C...
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              19 avril 2006 à 19:07:24

              Bah tu passes un pointeur sur la structure et tu fais
              identificateur->buttons pour acceder au bouton !
              • Partager sur Facebook
              • Partager sur Twitter
                19 avril 2006 à 19:17:38

                Lol c'est ce que j'ai fait tout marche sauf la variable font o_O

                Personne a une idée?
                • Partager sur Facebook
                • Partager sur Twitter
                  20 avril 2006 à 17:25:19

                  désolé, petit up...
                  marche toujours pas :(
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 avril 2006 à 17:29:03

                    Citation : code C


                    createButton(screen, &vars.newGame);


                    Pourrais tu montrer la déclaration de vars! Est-ce un pointeur ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 avril 2006 à 17:57:16

                      baj j'ai juste
                      vars vars;
                      pas un pointeur.
                      Je passe l'adresse de la struct donc je peux bien y accéder après non? C'est dans ma fonction que je créé un pointeur! ((buttons* button) appelé par &vars.newGame)

                      EDIT: ca marche -_-"
                      en fait tout était bon, sauf que au lieu de déclarer ma variable font dans la fonction que j'ai créé init, je la déclare dans le main...
                      Je comprends pas mais bon... truc à la c*n!
                      merci quand même ;)
                      • Partager sur Facebook
                      • Partager sur Twitter

                      pointeur sur ue structure

                      × 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