Partage
  • Partager sur Facebook
  • Partager sur Twitter

Classe qui n'hérite pas

Sujet résolu
    16 juin 2019 à 13:37:16

    Bonjour,

    J'ai actuellement un problème bloquant et qui à l'air assez simple à résoudre mais pour une quelconque raison je ne réussit pas à voir où est mon problème. Est ce que je n'ai pas compris une règle fondamentale de l'héritage ou est ce que mon problème est de type logiciel ?

    J'ai passé environ 10h sur différents tuto afin d'essayer de comprendre mais rien n'y fait, je reste toujours bloqué sur ce problème qui a l'air pourtant trivial à résoudre :

    Problème :

    Je possède une classe A, qui est une classe mère, et celle ci transmet par héritage une fonction à la classe B, qui est une sous classe de A, par héritage. Dans mon header(.h) j'ai écrit quelque chose de cette forme :

    #ifndef A_H
    #define A_H
    
    class A
    {
    public:
        A(void);
        ~A(void);
        
        void bla(int c, int d);
    };
    
    #endif
    
    #ifndef B_H
    #define B_H
    
    class B : public A
    {
    public:
        B(void);
        ~B(void);
    };

    Dans mon .cpp :

    #include "header.h"
    
    // A
    
    A::A(void){}
    
    A::~A(void){}
    
    void A::bla(int c, int d){}
    
    // B
    
    B::B(void){}
    
    B::~B(void){}


    Dans mon main.cpp :

    #include "header.h"
    
    int main()
    
    {
    
         B var;
    
         var.bla(2,3);
    
        return 0;
    
    }


    Et la *craque* à la compilation le compilateur me dit que ma classe B ne contient aucune fonction bla(int, int) :

    error: no matching function for call to 'B::bla(int,int)'

    Est ce que quelqu'un, s'il vous plait, aurait une idée du comment cela ne fonctionne pas et pourquoi ? J'ai peut être commis une erreur stupide mais cela fait un moment que je suis bloqué et je n'ai pas trouvé, ni sur internet ni de mon propre chef comment résoudre ce problème.

    Je vous remercie par avance du temps que vous consacrerez à bien vouloir m'aider.

    Koromire

    -
    Edité par Koromire 16 juin 2019 à 13:53:39

    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2019 à 13:49:24

      Salut Koromire,

      La fonction "bla" définie dans la classe "A" doit posséder un type de retour :

      Class A
      {
        //...
        void bla(int c, int d);
      }
      
      //...
      
      void A::bla(int c, int d)
      {
        //...
        // Dans le cas d'un retour de type "void", il n'y a pas de "return"
      }


      Bonne chance !

      • Partager sur Facebook
      • Partager sur Twitter
        16 juin 2019 à 13:53:02

        Salut warspec,

        J'ai édité car malheureusement j'ai bien mis le void dans mon programme, ça ne vient pas de là :(

        Merci d'avoir jeté un coup d'oeil.

        edit : J'ai redémarré mon pc et ça marche...o_O Pourquoi ça ne voulais pas avant je ne sais pas mais bon le principal c'est que ça marche !

        -
        Edité par Koromire 16 juin 2019 à 14:05:53

        • Partager sur Facebook
        • Partager sur Twitter

        Classe qui n'hérite pas

        × 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