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 :

a propos d Heritage


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Points : 7
    Points
    7
    Par défaut a propos d Heritage
    est ce que c 'est possible de faire afficher a l'aide d'une methode dans une classe mere des variables de classe filles ?? et comment !! merci

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 477
    Points
    11 477
    Billets dans le blog
    11
    Par défaut
    A part en faisant du cast moche, non.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Pas directement mais regarde ce simple exemple
    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
    #include <iostream>
     
    class A 
    {
    public:
    	virtual void show() {};
    };
     
    class B : public A
    {
    	int var ;
    public:
    	B() : var(123) {}
    	virtual void show()
    	{
    		std::cout << "var=" << var << std::endl ;
    	}
    };
     
    void print(A* a)
    {
    	a->show();
    }
     
    int main()
    {
    	B b;
    	print(&b);
    }
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 619
    Points : 30 642
    Points
    30 642
    Par défaut
    Salut,

    L'idéal est sans doute d'éviter de rendre la classe (que ce soit la classe mère ou la classe fille) responsable de l'affichage...

    En effet, cela donne une responsabilité à la classe qu'elle ne devrait sans doute, conceptuellement parlant, pas avoir.

    De plus, l'affichage peut prendre un grand nombre de formes, telles que l'affichage dans une console, dans un formulaire issu d'une bibliothèque quelconque, voire, qui sait, l'envoi vers des flux divers et variés.

    La meilleure solution passe donc sans doute par quelque chose qui pourrait se rapprocher du DP visiteur:

    Tu aurais une classe visiteur qui se rapprocherait de
    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
    class Visitor
    {
        public:
            /* virtual */ void visit(Derived1 const &  d1) const
            {
                /* ce qu'il faut faire */
            }
            /* virtual */ void visit(Derived2 const &  d1) const
            {
                /* ce qu'il faut faire */
            }
            /* virtual */ void visit(Derived3 const &  d1) const
            {
                /* ce qu'il faut faire */
            }
            /* ... */
    };
    et, d'un autre coté, ta hiérarchie de classes pourrait ressembler à
    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
    class Base
    {
        public:
            virtual void accept(Visitor const & ) const = 0;
    };
    class Derived1 : public Base
    {
        public:
             virtual void accept(Visitor const & v) const
             {
                 v.visit(*this);
             }
    };
    class Derived2 : public Base
    {
        public:
             virtual void accept(Visitor const & v) const
             {
                 v.visit(*this);
             }
    };
    class Derived3 : public Base
    {
        public:
             virtual void accept(Visitor const & v) const
             {
                 v.visit(*this);
             }
    };
     /* ... */
    Grace au double dispatch que cela occasionne, il est possible de faire en sorte que le visiteur effectue une action particulière en fonction du type réel de la variable que tu souhaites visiter, et il est meme possible (si la fonction visit() est virtuelle) de créer une hiérarchie de visiteur qui adapte le comportement de celui-ci aux différents contextes que j'ai cité au début de mon intervention
    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 expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Simple question de ma part: le découpage ne pourrait-il pas être de type:
    • fournir donnée à afficher (responsabilité direct hiérarchie), avec format genre clé/valeur, xml ou json.
    • afficher données (responsabilité hiérarchie d'afficheurs)

Discussions similaires

  1. [Language][Héritage] Erreur à propos du constructeur
    Par zizou771 dans le forum Langage
    Réponses: 4
    Dernier message: 12/09/2005, 16h48
  2. A propos depth buffer
    Par j.yves dans le forum DirectX
    Réponses: 1
    Dernier message: 03/12/2002, 00h41
  3. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22
  4. Fonctionnement de la compression DivX
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 20/09/2002, 14h10
  5. A propos du composant DBGrid
    Par _Rico_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/07/2002, 09h18

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