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 :

invalid conversion from int to int


Sujet :

C++

  1. #1
    Membre actif
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut invalid conversion from int to int
    bonjour ,

    je viens de développer un jeu en c++,j'ai trouvé quelques problèmes avec les pointeurs voila le message qui s'affiche "invalide conversion from int to int"
    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     void Brique::collision(ball b){
                             if(i>0) /* si ya une brique,une collison avec la balle peux avoir lieu*/
                                 {
                             if((b.rballe.x + b.rballe.w) >= rbrique.x
                                       &&
                              (b.rballe.x) <= (rbrique.x + rbrique.w)
                                        &&
                              (b.rballe.y + b.rballe.h) >= rbrique.y
                                        &&
                              (b.rballe.y) <= (rbrique.y + rbrique.h))
                                         {
                                      b.sens2=1;
          /* efface les briques selon le niveau*/
    l'erreur se produit dans la ligne b.sens2=1 ;sachant que sens2 est un attribut déclarée comme pointeur dans la classe balle .merci d'avance

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    [EDIT]J'avais mal lu, vikki donne la solution
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Hello,
    Effectivement, tu sembles vouloir affecter un entier à un pointeur, heureusement que le compilateur t'arrête Pourquoi avoir déclaré sens2 en tant que pointeur (pointeur vers quel type dalleurs?) alors que le but semble de stocker un entier en fonction du sens (peut être qu'un enum serait plus claire)?

  4. #4
    Membre actif
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut
    Citation Envoyé par vikki Voir le message
    Hello,
    Pourquoi avoir déclaré sens2 en tant que pointeur (pointeur vers quel type dalleurs?) alors que le but semble de stocker un entier en fonction du sens (peut être qu'un enum serait plus claire)?
    pointeur vers un entier;j'ai déclaré un pointeur car j'ai besoin de modifer la valeur elle meme du variable sens2 je vous souviens que sens2 est déclaré dans une autre classe Balle mais elle est aussi utilisée dans cette classe "brique"

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Citation Envoyé par asprog Voir le message
    pointeur vers un entier;j'ai déclaré un pointeur car j'ai besoin de modifer la valeur elle meme du variable sens2 je vous souviens que sens2 est déclaré dans une autre classe Balle mais elle est aussi utilisée dans cette classe "brique"
    Alors dans ce principe là, il faudrait mettre
    Pourtant, vous raisonnement est faux.
    Si vous voulez modifier une balle, ce n'est pas son sens qui doit être un pointeur, mais toute la balle, lors du passage dans la fonction qui fait la modification.
    Sur ce principe là, votre fonction collision prends un pointeur sur ball (afin de modifier le sens de la balle par la suite):
    (En prennant en compte que sens2 est un int). Et hop, plus de problème
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre actif
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut
    et si j'ai écris b->sens2=1 est ce que la variable sens2 prend la valeur 1 en mémoire sachant que dans une autre fonction dans la classe balle j'ai une autre utilisation de sens2 et qui prend une autre valeur.
    bref sens2 est utilisée plusieurs fois dans mon programme et je veux bien conserver et récupéré sa dernière valeur c'est pourquoi j'ai pensé au pointeur

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Citation Envoyé par asprog Voir le message
    et si j'ai écris b->sens2=1 est ce que la variable sens2 prend la valeur 1 en mémoire sachant que dans une autre fonction dans la classe balle j'ai une autre utilisation de sens2 et qui prend une autre valeur.
    bref sens2 est utilisée plusieurs fois dans mon programme et je veux bien conserver et récupéré sa dernière valeur c'est pourquoi j'ai pensé au pointeur
    Oui, cela fonctionnera.
    En fait, dans votre application, vous ne devriez qu'avoir une seule balle.
    Si une fonction à besoin d'avoir des informations sur la balle, on lui donne la balle en paramètre (sans pointeur (si possible avec une référence constante (voir FAQ C++))
    Si une fonction a besoin de modifié les paramètre de la balle, alors dans ce cas, il faut passer un pointeur.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Membre actif
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut
    bon pour être plus précise dans ma question je vais vous montrer mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class ball{
               int x,y;
     
          public:
                 int sens1,sens2;
                   ball();
                 ball(int ,int);
                 void deplaceBalle();
                 void load();
                 void affiche();
                 void Limite();
                 void collision(Raquete);
               };
    ça c l'interface; voyant maintenant l'implémentation du méthode collision(Raquete)
    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
     
       void ball::collision(Raquete r){
              { /* la collision entre la balle et la raqette*/
            if((rballe.x + rballe.w) >= r.rraquet.x
                     &&
            (rballe.x) <= (r.rraquet.x + r.rraquet.w)
                     &&
            (rballe.y + rballe.h) >= r.rraquet.y
                      &&
             (rballe.y) <= (r.rraquet.y + r.rraquet.h))
                         {
                  sens2=0;
                       }
                        }
                        }
    comme vous voyez sens2=0 ; passons maintenant à une autre classe Brique dans laquelle on va utiliser sens2
    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
     void Brique::collision(ball *b){
                               for (y=0;y<10;y++)
                                  {
                               for (x=0;x<10;x++)
                                  {
                                rbrique.x=x*51;
                                rbrique.y=y*21;
                             if(i>0) /* si ya une brique,une collison avec la balle peux avoir lieu*/
                                 {
                             if((b->rballe.x + b->rballe.w) >= rbrique.x
                                       &&
                              (b->rballe.x) <= (rbrique.x + rbrique.w)
                                        &&
                              (b->rballe.y + b->rballe.h) >= rbrique.y
                                        &&
                              (b->rballe.y) <= (rbrique.y + rbrique.h))
                                         {
                                      b->sens2=1;
    et par la suite on va faire un test sur sens2 dans la classe balle: si elle prend la valeur 0 alors faire ceci sinon faire cela .
    j'espère que je sois plus précise dans l'explication de mon problème cette fois ci

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Hum là, il n'y a plus de problème ? Si ? Compilation ou exécution ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  10. #10
    Membre actif
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut
    ma question d'abord: est ce que je vais déclarer mon variable sens2 en tant que pointeur ou pas??veuillez me répondre précisément et merci d'avance

  11. #11
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par asprog Voir le message
    ma question d'abord: est ce que je vais déclarer mon variable sens2 en tant que pointeur ou pas??veuillez me répondre précisément et merci d'avance
    Veuillez vous documenter sur ce qu'est un pointeur, une référence, et ne pas nous ordonner de manière brutale de répondre à vos questions. On est pas aux ordres.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  12. #12
    Membre actif
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    et ne pas nous ordonner de manière brutale de répondre à vos questions. On est pas aux ordres.
    je m'excuse vraiment j'avais pas l'intention de vous ordonner

  13. #13
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Voici un cours (il y en a d'autre) sur les pointeurs: http://chgi.developpez.com/pointeur/

    Pour l'explication:

    sens2 n'est pas un pointeur, meme si on veut channger sa valeur selon les fonctions. Je pensais l'avoir explique plutot, mais je vais recommencer.

    Premierement, nous evitons les pointeurs le plus possible (surtout en C++)
    Maintenant, l'histoire c'est que je conseille de passer une balle par pointeur (donc un pointeur sur balle, donc si nous changeons quelque chose a l'interieur, le changement est toujours present en sortant de la fonction (ce qui n'est pas le cas avec un passage par copie (sans pointeurs), car c'est une copie (comme le nom l'indique)))
    Donc meme avec un pointeur sur une balle, on pourra modifie sens2
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  14. #14
    Membre actif
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut
    merci LittleWhite pour votre explication

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

Discussions similaires

  1. invalid conversion from ‘Position*’ to ‘int’ !?
    Par User Name dans le forum Débuter
    Réponses: 16
    Dernier message: 26/06/2011, 23h57
  2. Réponses: 4
    Dernier message: 15/10/2008, 21h30
  3. Réponses: 7
    Dernier message: 16/02/2008, 07h30
  4. error: invalid conversion from `const wxChar*' to `CHAR*'
    Par barbarello dans le forum wxWidgets
    Réponses: 16
    Dernier message: 31/01/2006, 11h28
  5. Réponses: 2
    Dernier message: 24/12/2005, 11h37

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