Partage
  • Partager sur Facebook
  • Partager sur Twitter

surchage de données

utilisation de données de sous classe par les méthode de la classe mere

Sujet résolu
    1 juillet 2007 à 17:46:37

    bonjours a tous.

    j'ai une question assez particulière.

    mon problème est le suivant:
    j'ai une classe de base virtuelle dont dérivent plusieurs sous classes.
    chacune des sous classes possède une donnée membre static qui diffère entre chaque sous classe mais qui doit etre utilisé par les fonction de la classe de base

    (il s'agit d'une image de l'objet; il est inutile de posséder plusieurs copies de celle ci pour raison de place et temps de chargement mais chaque sous objet a son image propre. la classe de base possède elle les méthode de référence pour afficher ces objets)

    je ne peux donc pas faire en faire une donnée de la classe de base car il y aurai alors autant de copie que d'instance de chacune des sous classe, ni déclarer cette variable static dans la classe mere car chaque sous classe doit stocker ces données personnelles dedans.

    j'ai tenté de surcharger les données comme on le ferai pour ddes méthodes virtuelles mais meme si le compilateur acepte, je n'ai aucun résultat a l'écran (pas de bug non plus)

    quelle est donc la portée de données surchargées et peu elle etre modifié ?
    merci d'avance pour votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      1 juillet 2007 à 19:08:11

      Je n'ai peut-être rien compris à ta question mais je tente une réponse.

      Une classe mère n'a pas accès aux attributs de ses classes filles (sauf si ceux-ci sont public évidemment). Il faut donc faire autrement.

      La solution est de déclarer ta méthode de la classe mère virtuelle pure C'est-à-dire :


      class Mere{
      //...
         virtual int maMethodeVirtuellePure(int arg1, int arg2,...) = 0 ;
      //....
      };
       


      Et ensuite de redéfinir cette même méthode dans les classe filles.


      class fille: public Mere{
      //...
         virtual int maMethodeVirtuellePure(int arg1, int arg2,...)
         {
             cout << "salut" << endl;
         }
      //...
      };
       


      La méthode virtuelle de chaque classe fille a ainsi accès aux éléments statiques de la classe.
      Par contre, il n'est plus possible de créer d'objet de type Mère.

      Je sais pas si ça répond à ta question
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        1 juillet 2007 à 20:47:15

        c'est ce que j'ai finis par faire mais sa oblige de redéfinir chacune des méthode pour tous les sous objets alors que la méthode reste la meme. (enfin je l'ai fait en laissant la méthode virtuel seulement)
        après à part déclarer la classe fille comme amie de je vois pas d'autres solutions...

        merci en tt cas
        • Partager sur Facebook
        • Partager sur Twitter

        surchage de données

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown