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 :

appelle d'une méthode d'une autre classe dans ma classe


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut appelle d'une méthode d'une autre classe dans ma classe
    Bonjour,

    Le titre n'est que peu claire, mais je n'arrive pas a en trouver un mieu

    Voila un exemple de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    void  TMaClasse::Draw(const sf::RenderWindow &MainWin)
    {
      MainWin.draw(this->m_sprite);
    }
    sur ce petit bout de code, le compilateur me sort l'erreur :

    error: passing ‘const sf::RenderWindow’ as ‘this’ argument of ‘void sf::RenderTarget::draw(const sf:rawable&, const sf::RenderStates&)’ discards qualifiers [-fpermissive]
    MainWin.draw(m_Sprite);
    Et je n'ai aucune idée pourquoi

    Si quelqu'un peu m'aiclairer,
    merci !

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Tu passe à ta méthode une référence constante or tu appelles une méthode non constante avec ta référence.

    Soit tu passes une référence non-constante à ta méthode, soit tu met la méthode draw en const si elle ne modifie ni ne retourne une référence non-constante sur aucun attribut non mutable de la classe.

  3. #3
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut
    oh oui, c'est exactement ça

    Merci beaucoup

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    Pourtant, le message est clair: Le compilateur te dit que tu transmet un "const sf :: RenderWindow" (autrement dit, un objet constant, même si tu le passe par référence ) et que la manière dont tu l'utilises (en appelant la fonction draw() ) "rejette les qualificatifs".

    Autrement dit, tu essayes d'appeler une fonction non constante de ton sf :: renderWindow (la fonction draw est très certainement non constante) et qui risque donc de modifier l'objet au départ duquel elle est appelée, au départ d'un objet pour sur lequel tu t'es engagé à ne pas essayer d'apporter de modification, vu que tu l'as transmis sous une forme constante.

    On peut raisonnablement comprendre que le compilateur ne soit pas d'accord avec cette tentative car, pour lui, un objet qui ne doit pas être modifié n'a strictement ... aucune raison de l'être (ni même de se trouver dans une situation ou il pourrait l'être).

    Retires le cvQualifier (le const) qui précède sf :: renderWindow, et tout rentrera dans l'ordre (n'oublies pas de le faire au niveau de la déclaration de la fonction et de son implémentation (donc dans le .hpp et dans le .cpp) )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut
    Expliqué comme ça, c'est vrai que c'est tout de suite plus claire, je ne suis pas encore habitué aux messages d'erreur de g++, ils me font encore un peu peur

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Citation Envoyé par EpiTouille Voir le message
    Expliqué comme ça, c'est vrai que c'est tout de suite plus claire, je ne suis pas encore habitué aux messages d'erreur de g++, ils me font encore un peu peur
    Je le comprends très bien, mais je peux te rassurer: il ne faut pas en avoir peur.

    J'ai pu remarquer que le compilateur em...dait de nombreuses personnes, mais je n'ai jamais entendu la moindre plainte d'une personne qui aurait été mordue par lui
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Accès à une méthode d'une form depuis une autre autre form
    Par arngrimur dans le forum Windows Forms
    Réponses: 16
    Dernier message: 13/01/2012, 15h45
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 0
    Dernier message: 30/09/2009, 18h42
  5. Réponses: 6
    Dernier message: 20/04/2007, 15h24

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