Partage
  • Partager sur Facebook
  • Partager sur Twitter

Redéfinition d'une variable dans une classe dérivée

Sujet résolu
    6 avril 2008 à 12:33:14

    Bonjour,

    Imaginons que je crée une classe Matrice, contenant un tableau de double, et que je veuille créer une classe dérivée MatriceEntiers dont le tableau ne contienne que des entiers.
    Cela doit être tout simple, mais je n'ai quand même pas trouvé comment faire pour changer le type du tableau de la classe mère à la classe fille, ie pour passer de double* à bool*, sans redéfinir un nouveau tableau (auquel cas l'héritage perdrait tout son intérêt)... Pourriez-vous m'indiquer comment le faire ?

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2008 à 13:02:12

      Je pense que tu devrais utiliser les modèles (templates). Je ne suis pas un expert dans le sujet, mais les templates permettent de modifier le type des attribut d'une classe lors de l'implémentation. Ca donnerait un truc d ce genre : si je me trompe, merci de me corriger ! :p

      1. template <class T>
      2. class Matrice
      3. {
      4. private :
      5. T *tableau // Pointeur vers un tableau de type T (définit plus tard)
      6. }
      7. int main()
      8. {
      9. Matrice<double> Matrice1; //Création d'une matrice de double (T = double)
      10. Matrice<int>    Matrice2; //Création d'une matrice de int (T = int)
      11. }


      Voila, après il y a des règles à suivre dans l'implémentation de tes fonctions, mais je te aiss taper "templaes " dans google : c'est la solution à ton problème, tu n'as pas besin d'utiliser l'héritage !

      Salut ! ;)
      • Partager sur Facebook
      • Partager sur Twitter
        6 avril 2008 à 13:56:41

        E-Sh4rk a tout à fait raison, ce genre de problème se traite avec des modèles de classes (les fameux templates du C++), pas avec de l'héritage.

        Les modèles de classes sont instanciés automatiquement à la compilation. L'idée est de dire que tu vas faire une classe matrice pour traiter des matrices de contenu indéterminé. C'est lorsque tu vas utiliser ta classe que tu vas dire, je veux une matrice d'entiers, de doubles, de nombres complexes, ou pourquoi pas ... de matrices d'entiers.
        • Partager sur Facebook
        • Partager sur Twitter
        Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
          6 avril 2008 à 15:22:58

          J'ai l'impression de sortir l'artillerie lourde pour un détail, en utilisant les templates pour une vulgaire "particularisation" du type... Mais soit, c'est peut-être dû à mon manque de connaissance sur les templates, je vais me pencher là-dessus tout de suite, merci de vos réponses !
          • Partager sur Facebook
          • Partager sur Twitter
            6 avril 2008 à 16:46:30

            Ce n'est pas du tout l'artillerie lourde ^^ !
            C'est très simple si tu connais ! Et ce genre de problème se règle bien plus facilement come ceci ! Si tu veux un exemple de templates, observe la classe vector de la STL. Si tu ne trouves pas de doc ou que tu comprends pas, contacte moi par MP je t'expliquerai perso !
            • Partager sur Facebook
            • Partager sur Twitter
              6 avril 2008 à 16:56:17

              Je viens d'implémenter des templates dans mon programme à la place de l'héritage que j'utilisais auparavant. J'ai compris leur utilisation dans un contexte basique, mais je suis confronté maintenant à un problème (traditionnel je crois) : le fait que les déclarations doivent être dans le même fichier que les définitions... ce qui ne me plaît pas trop...
              Apparemment, il existe un mot clé export pour régler le problème, mais qu'aucun compilateur ne sait traiter encore... Que me conseillez-vous ?
              • Partager sur Facebook
              • Partager sur Twitter
                6 avril 2008 à 16:58:46

                passes par un fichier .inl (cf FAQ de developpez)
                • Partager sur Facebook
                • Partager sur Twitter
                  6 avril 2008 à 18:02:11

                  Ou sors tes sous et achète un compilateur qui supporte le mot-clé export...

                  Sinon, je vois pas en quoi le fait ded tout mettre dans un .h est un problème.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                    6 avril 2008 à 20:12:01

                    Entendu, j'ai mis les déclarations dans le fichier .h, mais il me reste des erreurs... Je vais créer un autre sujet pour ça, merci déjà pour l'idée des templates !
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Redéfinition d'une variable dans une classe dérivée

                    × 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