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 :

Problème d’accès avec les héritages multiples


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut Problème d’accès avec les héritages multiples
    Salut !
    Je me croque le cerveau avec un petit problème d'héritage :'(
    Je créé une class A qui hérite de deux class B et C, je veux que les fonctions de B puisse avoir accès au fonction de C sans que celle si soit statique :^/
    pour mieux comprendre voila en gros ce que je veux faire :
    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
     
    int main(void)
    {
       A objet;
       objet.FONCTION_DANS_B();
    }
     
     
    class A : public B, public C
    {
       ...
    };
     
    class B
    {
       public :
          void FONCTION_DANS_B()
          {
             Lecture_C();  //j'aimerais ici avoir accé a la fonction Lecture_C qui se trouve dans la class C, comment faire ?
          }
    };
     
    class C
    {
       public :
          void Lecture_C();
          {
             printf("Lecture dans C a partir de B");
          }
    };
    Comment je pourais faire ca ?

    Merci

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Il doit y a voir un problème de conception...
    B ne contient-il pas un C ?
    Ou alors, B ne peut-il pas être hérité de C ?

  3. #3
    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
    B et C n'ayant aucun lien, ça me paraît douteux ce que tu veux faire. Le lien entre B et C étant A, ce ne serait pas à partir de lui que tu voudrais faire communiquer B et C (ce qui serait cette fois faisable) ?

    Tu peux aussi donner les vrais noms des classes / fonctions, ça nous aidera à mieux cerner ce que tu cherches à faire.

  4. #4
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Merci pour vos réponses =)

    Citation Envoyé par Laurent Gomila
    Tu peux aussi donner les vrais noms des classes / fonctions, ça nous aidera à mieux cerner ce que tu cherches à faire.
    ha ok, desoller :^/

    ma class A est en fait Camera
    la class B est PereObjet
    la class C est InterruptionTouche

    donc Camera est un objet, il hérite donc de PereObjet.
    pour géré les interruption du clavier, il hérite aussi de InterruptionTouche

    le problème est que une interruption du clavier peu avoir pour conséquence d’exécuter une fonction se trouvent dans PereObjet.


    Citation Envoyé par Eusebe
    Il doit y a voir un problème de conception...
    B ne contient-il pas un C ?
    Ou alors, B ne peut-il pas être hérité de C ?
    Pour que ça soit plus flexible mieux vaut pas :^/


    Citation Envoyé par Laurent Gomila
    Le lien entre B et C étant A, ce ne serait pas à partir de lui que tu voudrais faire communiquer B et C (ce qui serait cette fois faisable) ?
    oui effectivement, je croie que c’est la meilleur solution, que pence tu de donné à B (InterruptionTouche) un pointeur vers A(Camera) ?
    seulement là je me trouve devant un autre problème, la déclaration des class :^/

    A(Camera) a besoin de connaître B(InterruptionTouche) pour pouvoir utiliser ces fonctions, et B(InterruptionTouche) a besoin de connaître A(Camera) pour pouvoir définir son pointeur... qui definir en premier ? :^/

    Merci

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Et en créant une fonction virtuelle dans InterruptionTouche, qui serait implémentée dans Camera ?

    Cette fonction pourrait être appelée par InterruptionTouche, et appèle PereObjet si besoin...

  6. #6
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Citation Envoyé par Eusebe
    Et en créant une fonction virtuelle dans InterruptionTouche, qui serait implémentée dans Camera ?

    Cette fonction pourrait être appelée par InterruptionTouche, et appèle PereObjet si besoin...
    bha en fait la fonction à appelée se trouve dans PereObjet donc je peu pas créé la même fonction dans InterruptionTouche en virtual car je croie pas que l'héritage surdéfinisse les fonctions virtual ...

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 294
    Par défaut
    Sans refermer ta hiérarchie, il te faut passer par du cross-casting.

    Sinon ton truc me rappelle vaguement les mixins. Regarde si cela ne correspondrait pas à ce que tu cherches à faire. Il y a quatre articles dans mes souvenirs, je suis désolé tu vas devoir fouiller sur le site.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

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

Discussions similaires

  1. Problème avec les jointures multiples
    Par kriskadespe dans le forum Langage SQL
    Réponses: 13
    Dernier message: 12/08/2011, 11h46
  2. Problème technique avec les états : lenteur
    Par stagolee dans le forum IHM
    Réponses: 5
    Dernier message: 21/09/2006, 11h19
  3. problème sql avec les concepteurs visual basic
    Par Le Rebel dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/05/2006, 10h25
  4. [VB6]Prob avec les requêtes multiples
    Par cammipascal dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 30/03/2004, 18h46

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