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 :

Déclaration d'une fonction en const


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 54
    Points
    54
    Par défaut Déclaration d'une fonction en const
    Bonjour,

    j'aurais une petite question que je n'arrive pas à résoudre par moi-même : je voudrais déclarer la fonction "getValue()" en const mais le compilateur m'indique une erreur. Auriez-vous une idée pour me débloquer ? Merci d'avance !


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    // Le .h
     
    class paramGaussian : public param {
     
    public:
        paramGaussian();
        ~paramGaussian();
        void setValue(const QStringList paramValue);
        double getValue() const ; // Ici, erreur du compilateur
     
    private:
        double m_mean;
        double m_std;
        std::default_random_engine m_generator;
        std::normal_distribution<double> m_distribution;
    };
     
    // Le .cpp
     
    #include "paramGaussian.h"
     
    paramGaussian::paramGaussian() : param(), m_mean(0), m_std(0) {
        m_distribution = std::normal_distribution<double>(this->m_mean, this->m_std);
    }
     
    paramGaussian::~paramGaussian() {
    }
     
    void paramGaussian::setValue(const QStringList paramValue) {
        QLocale c;
        this->m_mean = c.toDouble(paramValue[0]);
        this->m_std = c.toDouble(paramValue[1]);
        m_distribution = std::normal_distribution<double>(this->m_mean, this->m_std);
    }
     
    double paramGaussian::getValue() const { // Ici, erreur du compilateur
        return m_distribution(m_generator);
    }

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Ta fonction modifie m_distribution. Elle n'est donc pas constante.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 54
    Points
    54
    Par défaut
    Merci oodini, je me doutais de la réponse mais est-ce que j'ai un moyen d'avoir la même fonctionnalité en rendant la fonction constante ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Une fonction déclarée comme const s'engage à ne pas modifier l'objet du point de vue l'utilisateur.
    Tu tiens vraiment à faire de fausses promesses ?

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 54
    Points
    54
    Par défaut
    Ok, je la laisse en non const ! J'aurai essayé ;-)

    Merci.

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

Discussions similaires

  1. [C#]Déclaration d'une fonction globale
    Par Raton dans le forum C#
    Réponses: 7
    Dernier message: 21/09/2013, 12h27
  2. Réponses: 4
    Dernier message: 24/04/2007, 16h07
  3. déclaration d'une fonction static
    Par salseropom dans le forum C
    Réponses: 4
    Dernier message: 09/03/2007, 16h59
  4. Réponses: 2
    Dernier message: 10/01/2007, 23h28
  5. Réponses: 4
    Dernier message: 26/07/2005, 13h38

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