Partage
  • Partager sur Facebook
  • Partager sur Twitter

Toujours un problème d'allocation -__-'

    18 mai 2006 à 21:50:39

    'soir...

    "Naaan encore lui" :p

    Eh oui!

    Alors j'ai un soucis, mon allocation ne veut pas se faire...

    j'ai en fait une structure :

    typedef struct Coord Coord ;
    struct Coord
    {
            SDL_Rect rect ;
           
            bool tf ; // True ou False
    };


    et j'aimerai déclarer ce tableau :

    Coord *missile[NB_MAX_MISSILES] ;


    Mais bon j'ai tout essayé :
    Coord *missile;
    missile = malloc( NB_MAX_MISSILES * ( sizeof( Coord ) ) ) ;

    ou encore :
    Coord *missile[NB_MAX_MISSILES] = malloc( NB_MAX_MISSILES * ( sizeof( Coord ) ) ) ;
    :p

    Coord *missile[NB_MAX_MISSILES] ;
                   
    for( boucle = 0 ; boucle < NB_MAX_MISSILES ; boucle++)
            missile[boucle] = malloc( sizeof( Coord ) ) ;


    Voilou, tout ça dans l'optique d'une fonction :
    void tirer( Coord *missile[NB_MAX_MISSILES] , SDL_Rect position_vaisseau )
    {
            int boucle ;
            for( boucle = 0 ; boucle < NB_MAX_MISSILES ; boucle++)
            {
                    if( !missile[boucle]->tf )
                    {
                            missile[boucle]->tf = true ;
                            missile[boucle]->rect.x = position_vaisseau.x + 25 ;
                            missile[boucle]->rect.y = position_vaisseau.y ;
                           
                            exit(0);
                    }
            }
           
    }


    J'ai aussi essayé en déclarant un tableau normal, puis en le "pointant" :p lors de l'appel de la fonction...

    mais...
    invalid initializer (le plus souvent...)


    Bref chu pauméééé c'est assez fun! et je comprends pas pourquoi
    Coord *missile;
    missile = malloc( NB_MAX_MISSILES * ( sizeof( Coord ) ) ) ;

    ne marche pas alors que c'est assez similaire au code de matéo ...
    Il faut d'abord alloué la structure ou je ne sais quoi ? ^^
    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2006 à 23:54:49

      je te cite :

      bool tf ; // True ou False

      bool ? ça ça n'existe que en C++ alors si tu compiles comme en C ça ira pas
      • Partager sur Facebook
      • Partager sur Twitter
        19 mai 2006 à 0:02:12

        Citation : piclem


        Alors j'ai un soucis, mon allocation ne veut pas se faire...


        o_O C'est à dire ? Il se passe quoi ?

        Citation : piclem


        j'ai en fait une structure :

        typedef struct Coord Coord ;
        struct Coord
        {
                SDL_Rect rect ;
               
                bool tf ; // True ou False
        };



        et j'aimerai déclarer ce tableau :

        Coord *missile[NB_MAX_MISSILES] ;



        Un tableau de pointeurs ? T'es sûr ?

        Pouquoi pas
        Coord missile[NB_MAX_MISSILES] ;

        tout simplement ?
        • Partager sur Facebook
        • Partager sur Twitter
        Music only !
          19 mai 2006 à 13:25:55

          >Binabik : je compile en c++ :)

          > -ed- :

          Bah elle ne marche pas car car j'ai une erreur... :p

          Et justement quand je déclare ainsi mon tableau, j'ai une erreur quand je passe dans ma fonction :

          EDIT : oops !
          tirer( &missile , rect_vaisseau);


          222 C:\D..... cannot convert `Coord* (*)[10]' to `Coord**' for argument `1' to `void tirer(Coord**, SDL_Rect)'


          :)
          • Partager sur Facebook
          • Partager sur Twitter
            19 mai 2006 à 17:00:20

            Citation : piclem

            >Binabik : je compile en c++ :)

            > -ed- :

            Bah elle ne marche pas car car j'ai une erreur... :p

            Et justement quand je déclare ainsi mon tableau, j'ai une erreur quand je passe dans ma fonction :

            EDIT : oops !

            tirer( &missile , rect_vaisseau);



            222 C:\D..... cannot convert `Coord* (*)[10]' to `Coord**' for argument `1' to `void tirer(Coord**, SDL_Rect)'



            :)


            Pourquoi le paramètre de tirer() est de type Coord** ? Il devrait être de type Coord* et la fonction appelée comme suit :
            tirer( missile , rect_vaisseau);

            D'autre part, on dirait que tu compiles en C++. C'est voulu ? C et C++ sont des langages différents...

            http://david.tribble.com/text/cdiffs.htm
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !

            Toujours un problème d'allocation -__-'

            × 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