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 :

utiliser les méthodes d'un membre static d'une classe


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut utiliser les méthodes d'un membre static d'une classe
    Bonjour,
    je n'arrive pas à compiler ceci :

    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
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    class B {
     
    private :
    string s;
     
    public :
    inline B(string s_in) : s(s_in){};
    inline void affiche() { cout << s << endl;}
    ~B(){};
     
    };
     
    class A  {
     
    public :
    static const B b;
    A() { b.affiche();}
    ~A(){};
     
    };
     
    const B A::b=B("valable pour toute instance de la classe A");
     
    int main() {
     
    A essai;
     
    }

    Ce bout de code ne sert à rien, mais en gros je voudrais pouvoir utiliser dans une méthode de ma classe A, une méthode du membre statique b (instance de la classe B) de la classe A.

    Et j'ai le message d'erreur suivant :
    test_static.cc:22: erreur: passant « const B» comme «cet» argument de « void B::affiche() » écarte les qualificateurs

    Quelqu'un peut il m'aider ?

  2. #2
    screetch
    Invité(e)
    Par défaut
    l'objet b est const mais la méthode affiche ne l'est pas, d'où la plainte du compilateur

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    J'ai mis à résolu un peu vite, ça ne fonctionne pas mieux en déclarant la méthode affiche comme const :

    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
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    class B {
     
    private :
    string s;
     
    public :
    inline B(string s_in) : s(s_in){};
    inline const void affiche() { cout << s << endl;}
    ~B(){};
     
    };
     
    class A  {
     
    public :
    static const B b;
    A() { b.affiche();}
    ~A(){};
     
    };
     
    const B A::b=B("valable pour toute instance de la classe A");
     
    int main() {
     
    A essai;
     
    }
    Même code d'erreur.

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par tonio_a_588 Voir le message
    J'ai mis à résolu un peu vite, ça ne fonctionne pas mieux en déclarant la méthode affiche comme const :
    Pour déclarer une fonction const, il faut mettre le const après les paramètres pas avant le type de retour.

    C'est donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inline void affiche() const {...}
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inline const void affiche() {...}

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Super, merci de vos réponses rapides et efficaces. Je vais aller voir dans un cours ce que signifie une méthode const.

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

Discussions similaires

  1. Utiliser les méthodes d'un autre controleur
    Par sebastyen dans le forum MVC
    Réponses: 3
    Dernier message: 26/10/2008, 09h27
  2. Réponses: 15
    Dernier message: 14/05/2008, 09h15
  3. Quand et dans quels cas utiliser les méthodes repaint() et validate()?
    Par kayzra dans le forum Interfaces Graphiques en Java
    Réponses: 14
    Dernier message: 02/08/2007, 15h46
  4. Réponses: 1
    Dernier message: 10/05/2006, 19h45
  5. Utiliser les méthodes des boutons crées en rafale.
    Par kabouns dans le forum Composants
    Réponses: 8
    Dernier message: 03/12/2004, 10h48

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