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 :

Appels en cascade (cf construteurs)


Sujet :

C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Appels en cascade (cf construteurs)
    Bonjour,

    Existe-t-il un moyen pour que la méthode d'un classe appelle la méthode du même nom de sa classe parente ?
    Exactement de la manière dont les constructeurs s'appellent en cascade.

    Pour l'instant, dans la méthode en question de chacune des classes dérivées, j'appelle explicitement la méthode éponyme du parent.

    Mais je me demandais s'il existait un moyen plus élégant.

    Merci.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Implicitement, non. Tu ne peux que faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void Derivee::func()
    {
        Base::func();
    }
    Un truc généralement plus élégant est le pattern appelé template method :
    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
    class Base
    {
    public :
     
        void func()
        {
            // pre-process commun...
     
            do_func();
     
            // post-process commun...
        }
     
    private :
     
        virtual void do_func() = 0;
    };
     
    class Derivee : public Base
    {
    private :
     
        virtual void do_func()
        {
            // ...
        }
    };

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    D'un point de vue sémantique, cela semblerait artificiel d'utiliser deux noms de fonction différents.

    Je vais donc en rester à la 1ère solution proposée, que j'ai déjà mise en œuvre.

    Merci.

  4. #4
    Membre éclairé
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Par défaut
    Détrompe-toi, ce ne sont pas 2 noms différents pour une fonction:
    tu appelleras la fonction dérivée via Derivee::func() qui est définie dans la classe Parente, seulement, cette fonction appellera la fonction do_func() de la classe dérivée. C'est beau, non, cette hiérarchisation?

    Pour les constructeurs, tu seras plus ou moins forcé d'appeler le constructeur du parent, ceci ainsi:
    Derive:erive() : Parente(), ... {}
    (le ",..." marque la suite des constructeurs par défaut des membres par exemple)

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

Discussions similaires

  1. construteur appel un autre constrecteur
    Par tafpro dans le forum Général Java
    Réponses: 2
    Dernier message: 30/03/2014, 19h39
  2. [awk] Appel de fonctions en cascade
    Par Taxan dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/08/2013, 13h57
  3. POO Appel de methodes en cascade
    Par HurtMarley dans le forum Langage
    Réponses: 6
    Dernier message: 29/11/2012, 16h49
  4. Appel construteur : nombre d'argument incorrect
    Par bakman dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 21/07/2010, 11h30
  5. [TestStand] Appel de séquence en cascade
    Par capblans dans le forum Autres langages
    Réponses: 2
    Dernier message: 25/04/2005, 09h56

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