IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problèmes de pointeurs...


Sujet :

C++

  1. #1
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut Problèmes de pointeurs...
    Alors voila, dans mon programme, j'ai fait ceci pour tester la position de mes sprites :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    int Menu::Pos(int numSprite, int type)
    {
    	if((numSprite < taille) && (image[numSprite] != NULL))
    	{
        int x = (int)&rect[numSprite].x;
        int y = (int)&rect[numSprite].y;
        int *returnx = &x;
        int *returny = &y;
        if (type == 1)
        {
             return -(*returnx);
        }
        if (type == 2)
        {
             return -(*returny);
        }
        }
    }

    Et dans mon programme, il y a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         PrintSDL(font,screen,500,10,"positionx : %d", menu.Pos(i, 1));
         PrintSDL(font,screen,500,30,"positiony : %d", menu.Pos(i, 2));
    (printsdl est une fonction qui affiche du texte. elle n'est pas de moi)

    Et il m'affiche 0 !!! Meme si le rect est affiché completement en bas a droite de l'écran !!!

    Ou est mon problème ?

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut !

    il faudrait peut-être savoir ce que tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    int Menu::Pos(int numSprite, int type)
    {
       if((numSprite < taille) && (image[numSprite] != NULL))
       {
        int x = (int)&rect[numSprite].x;
        int y = (int)&rect[numSprite].y;//Là tu as récupéré des pointeurs castés en entiers sur &rect[numSprite].(x et y)
        int *returnx = &x;
        int *returny = &y;//Là, tu récupère des pointeurs sur les pointeurs pré castés
        if (type == 1)
        {
             return -(*returnx); //là tu revoies -x càd - (int)&rect[numSprite].x
        }
        if (type == 2)
        {
             return -(*returny); //là tu revoies -y càd - (int)&rect[numSprite].y
        }
        }
    }
    Je sais pas ce que tu tentes de faire, mais ta fonction est équivalente à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int Menu::Pos(int numSprite, int type)
    {
       if((numSprite < taille) && (image[numSprite] != NULL))
       {
           if (type == 1)
                return -(int)&rect[numSprite].x;
           else if (type == 2)
                return -(int)&rect[numSprite].x;
        }
    }
    Je ne pense pas que ce soit tout à fait ce que tu tentes de faire... puisque ça ne correspond à rien... un pointeur ne renseignera que sur la position en mémoire, et l'opposé d'un pointeur ne correspond absoluement à rien...

    Tu as du confondre pointeurs et références... ou quelque chose dans ce style...

    de plus prévoit des retours par défaut, ou (mieux) des exceptions au cas où les arguments seraient invalides... (type différent de 1 et de 2, numSprite >= taille, ou image[numSprite] == NULL)

    en tous cas, il y a un micmac quelque part... :\
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    si j'ai bien compris ton code, tu retourne une référence sur une variable locale. Le pb est que les variables locales sont détruites à la sortie de la fonction, une référence sur une de ces variables locales n' a donc plus de sens.

  4. #4
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut
    @Swoög C'est ce que je faisais au début, mais il m'affichait une ligne de chiffres (surrement l'adresse, c'est pour ça que je voulais récupérer ce qu'il y avait sous l'adresse.
    @jmv Mmmh... Donc apperrement, il faudrait que je donne a returnx la valeur dans la fonction, puis la renvoyer ? Je sais pas si ce que je dit est très clair...

  5. #5
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    je crois que j'ai rien compris à ton code on s'y perd avec les pointeurs et références.
    que veux tu faire exactement ?
    c'est quoi image ? rect ? taille ? je ne vois nulle part leur déclaration

  6. #6
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut
    Je suis parti d'une classe un peu bizzare, une classe sprite, et je l'ai modifiée.
    Enfin bon, je vais me débrouiller tout seul pour l'instant.

  7. #7
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut Re: Problèmes de pointeurs...
    et pourquoi pas tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int Menu::Pos(int numSprite, int type)
    {
        if((numSprite < taille) && (image[numSprite] != NULL))
        {
            if (type == 1)
                return rect[numSprite].x;
            if (type == 2)
                return rect[numSprite].y;
        }
        return -1; // il faut bien retourner qqchose !
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de pointeurs..embrouillé
    Par Frenchy dans le forum C++
    Réponses: 11
    Dernier message: 10/03/2005, 16h33
  2. Problème de pointeur avec un TQuery
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/01/2005, 13h57
  3. Problème de pointeur
    Par toma_lille dans le forum C++
    Réponses: 1
    Dernier message: 07/12/2004, 21h26
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. TBitmap et problèmes de pointeurs...
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/07/2003, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo