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 :

Méthode d'affichage et prob de const


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Par défaut Méthode d'affichage et prob de const
    Bonjour tout le monde,

    J'ai un petit problème concernant ma méthode d'affichage.
    Cette méthode contient la définition suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Recette::afficher_mieux(std::ostream& os) const{
    J'aimerais savoir s'il est possible dans le corps de cette fonction d'appeler une autre fonction modifiant une variable locale de celle-ci ?

    Exemple : dans le corps j'ai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      modifSousRecette(ingredients,(*it).first,(*it).second,1.00);
    Le compilateur me sort :
    103 passing `const Recette' as `this' argument of `void Recette::modifSousRecette(string_double_map&, Ingredient*, Quantite*, double)' discards qualifiers
    Cette erreur est-elle due au mot clé const ? Comment faire pour résoudre ca ?

    Merci d'avance

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Bonjour,
    Oui, mais ce n'est pas une erreur.
    T'as fonction est const, elle ne doit donc pas modifier la class pendant l'appel. A part les variable mutable, si je ne me trompe pas.
    Pourquoi l'affichage devrait modifier t'as class??

  3. #3
    Membre confirmé
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Par défaut
    Cet affichage doit récuperer par exemple les matieres premieres. Cette classe contient une map d'ingredient (classe mere de Recette et Matiere) et de Quantite.

    Lors de l'appel de cette fonction d'affichage je souhaitais créer une map temporaire de <string,double> (variable locale appelée ingredients) que j'allais modifier gràce à l'appel de la fonciton récursive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modifSousRecette(ingredients,(*it).first,(*it).second,1.00);
    Et après l'appel je n'aurais plus qu'a afficher ce que contient la map.

    Comment faire ?

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par allserv Voir le message
    Lors de l'appel de cette fonction d'affichage je souhaitais créer une map temporaire de <string,double> (variable locale appelée ingredients)
    Tout compte fait t'as choisi une map alors .
    Sinon une variable local à la fonction y as pas de problème, tu peut la modifier. Pour faire ce que tu veut il faudrait que it soit un const_iterator et que
    modifSousRecette soit const aussi.
    Peut tu montrer le code de cette fonction?

  5. #5
    Membre confirmé
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Par défaut
    Ah d'accord, je viens de mettre const à ma fonction recurisve et du coup je n'ai plus cette erreur.
    En fait je pensais que le mot clé const en fin de déclaration de méthode disait qu'aucun argument n'allait être modifié et en fait ca joue seulement sur les attributs de la classe.

    Merci de ton aide

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par allserv Voir le message
    Ah d'accord, je viens de mettre const à ma fonction recurisve et du coup je n'ai plus cette erreur.
    En fait je pensais que le mot clé const en fin de déclaration de méthode disait qu'aucun argument n'allait être modifié et en fait ca joue seulement sur les attributs de la classe.

    Merci de ton aide
    A ce que j'ai compris oui. Et ca t'empêche aussi d'appeler des fonctions non const de ta class.
    Je t'avoue que je ne suis pas encore à l'aise avec les const non plus. Mais ça permet de bien structurer tes class.

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

Discussions similaires

  1. problème méthode d'affichage
    Par layfon dans le forum JSF
    Réponses: 20
    Dernier message: 27/02/2015, 17h05
  2. [1.x] Meilleur méthode pour affichage libellé au lieu de l'id
    Par Bizoo dans le forum Symfony
    Réponses: 10
    Dernier message: 06/01/2011, 16h48
  3. Différentes méthodes d'affichage d'un bitmap
    Par atomicJo dans le forum MFC
    Réponses: 5
    Dernier message: 07/02/2008, 19h06
  4. Méthode d'affichage avec MFC
    Par Blobette dans le forum MFC
    Réponses: 2
    Dernier message: 09/03/2005, 16h48
  5. Prob d'affichage d'un tableau resultant d'u...
    Par Yohips dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 08/12/2004, 17h23

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