Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de compilation

Sujet résolu
    11 février 2019 à 15:50:25

    Salut,

    Je suis actuellement en train de suivre le cours "Programmez avec le langage C++" et je viens d'entamer la partie sur la POO. J'ai créé un tout petit programme pour pouvoir faire plein de petits tests et par la suite comprendre davantage les principes de la POO. Le souci c'est que je bloque dès la compilation du programme . Voici les codes :

    main.cpp :

    #include <iostream>
    #include "Test.h"
    using namespace std;
    
    int main()
    {
        MaClass MrX(17);
        MrX.TestAge;
    
        return 0;
    }
    

    Test.cpp :

    #include <iostream>
    #include "Test.h"
    using namespace std;
    
    void TestAge(int age){
    
        if (m_age<18)
            cout << "vous êtes mineur"<<endl;
        else
            cout <<"vous êtes majeur"<<endl;
    
    }
    
    
    MaClass::MaClass() : m_age(0)
    {
    
    }
    

    Test.h

    #ifndef TEST_H_INCLUDED
    #define TEST_H_INCLUDED
    
    #include <iostream>
    
    class MaClass {
    
    public :
        MaClass();
        void TestAge(int age);
    
    private :
        int m_age;
    };
    
    
    #endif // TEST_H_INCLUDED
    


    Mes erreurs :

    "error: no matching function for call to 'MaClass::MaClass(int)'"

    "error: statement cannot resolve address of overloaded function"

    "error: 'm_age' was not declared in this scope"




    -
    Edité par zaki95 11 février 2019 à 16:03:12

    • Partager sur Facebook
    • Partager sur Twitter
      11 février 2019 à 15:57:38

      Yo!

      Déjà, change de cours, il est vraiment naze celui-ci (une petite recherche sur le forum te montreras le copier coller qui circule (je l'ai pas sous la main)).
      et pour ton erreur : quand tu définis ta fonction TestAge, il faut mettre le nom de ta classe suivi par "::" donc :

      void MaClass::TestAge(int age){
      
      // ..
      
      } 

       Autre petite remarque, tu pourras pas changer ton âge avec cette classe.

      -
      Edité par KirbXCoucou 11 février 2019 à 15:58:27

      • Partager sur Facebook
      • Partager sur Twitter

      « Je n’ai pas besoin de preuve. Les lois de la nature, contrairement aux lois de la grammaire, ne permettent aucune exception. »
      D. Mendeleïev

        11 février 2019 à 16:08:45

        Merci pour ta réponse. J'ai effectué la modification, mais j'ai toujours ces deux erreurs qui apparaissent :

        "error: no matching function for call to 'MaClass::MaClass(int)'"

        "error: statement cannot resolve address of overloaded function"

        Sinon tu me conseilles quel cours pour débuter ?

        -
        Edité par zaki95 11 février 2019 à 16:09:16

        • Partager sur Facebook
        • Partager sur Twitter
          11 février 2019 à 16:14:57

          Dans ton main tu appelles le constructeur en lui envoyant un int en paramètre, mais ce constructeur n'existe pas dans ta classe.

          Dans ton appel à TestAge il manque le paramètre aussi. En fait je me demande si tu n'as pas inversé dans ton main et au lieu de passer le paramètre à TestAge tu l'envoies au constructeur. :-°

          Mais dans tous les cas il te faut au moins des parenthèses pour l'appel à TestAge.

          L'include dans ton .h est inutile aussi.

          Sinon pour des cours tu as celui de Zeste de Savoir ou celui de gbdivers. Les deux ne sont pas terminés mais bien meilleurs que celui de ce site. ;)

          -
          Edité par Maluna34 11 février 2019 à 16:15:18

          • Partager sur Facebook
          • Partager sur Twitter
            12 février 2019 à 9:00:23

            Merci pour ta réponse, le cours de gbdivers me semble pas mal. Je vais tout reprendre de zéro :)
            • Partager sur Facebook
            • Partager sur Twitter

            Erreur de compilation

            × 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