Partage
  • Partager sur Facebook
  • Partager sur Twitter

Incompréhension avec les opérateurs de comparaison

Sujet résolu
    24 juin 2019 à 16:30:11

    Bonjour

    Sur le cours de Matthieu Nebra (https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c/1897891-surchargez-un-operateur#/id/r-1907502) je reste bloqué parce que je ne sais pas où placer

    bool operator==(Duree const& a, Duree const& b);

    Il dit : à côté de la classe durée dans le fichier .h !

    J'ai fais comme lui, mais le debugueur me met :|

    undefined reference to `operator==(Duree const&, Duree const&)'

    error: ld returned 1 exit status|

    Je tiens à préciser que je débute en matière de programmation.

    David

    -
    Edité par davidzkitischwili 24 juin 2019 à 16:30:34

    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2019 à 16:35:55

      Salut,

      ça c'est la définition dans le .h mais il faut l'implémenter dans le .c ensuite !

      (et ce n'est pas le débuggueur mais le linker qui te met ce message).

      // dans le .hpp
      
      class Truc
      {
      
        bool operator==(const Truc& a,const Truc& b) const;
      
      };
      
      // dans le .cpp
      
      bool Truc::operator==(const Truc& a,const Truc& b) const
      {
        return  // a toi de voir comment ça se compare
      
      }



      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        24 juin 2019 à 16:44:48

        Lu'!

        Changes de cours. Il apprend un sacré paquet d'âneries à ne pas faire, en plus de montrer des exemples de code buggés et d'être obsolète (quelques recherches sur le forum t'en diront plus). Prends plutôt le tutoriel disponible sur Zeste de Savoir. Ou encore le cours de C++ de @gbdivers, même s'il est encore en écriture il ne contient pas ce genre de bavures (et si tu as des problèmes de compréhension sur une partie et que ce n'est pas à cause d'un manque d'étude du cours, tu peux poster ici). Si tu préfères un cours déjà complet, tourne toi vers le C++ Primer de Lippman dans sa dernière édition (en anglais), il sera un poil moins à jour mais c'est un bon cours.

        • Partager sur Facebook
        • Partager sur Twitter

        Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

          24 juin 2019 à 16:53:34

          Désolez si je suis lourd, mais j'ai du mal placer quelque chose ;

          Dans main.cpp j'ai 

          #include "duree.h"
          #include <iostream>
          using namespace std;
          
          int main()
          {
              Duree duree1(0, 10, 28), duree2(0, 15, 2);
              if (duree1 == duree2)
              {
                  cout << "Les deux durees sont identiques !" << endl;
              }
          
              return 0;
          }
          

          Ensuite j'ai crée une classe Duree

          dans duree.h :

          #ifndef DUREE_H_INCLUDED
          #define DUREE_H_INCLUDED
          
          class Duree
          {
              public:
          
              Duree(int heures = 0, int minutes = 0, int secondes = 0);
          
              private:
          
              int m_heures;
              int m_minutes;
              int m_secondes;
              
          };
          #endif // DUREE_H_INCLUDED
          

          Et dans duree.cpp :

          #include "Duree.h"
          
          Duree::Duree(int heures, int minutes, int secondes) : m_heures(heures), m_minutes(minutes), m_secondes(secondes)
          {
          }
          

          Donc quand Matthieu Nebra dit à chaque fois dans le fichier .cpp, je sais pas lequel. Et pour 'bool operator==(Duree const& a, Duree const& b);' il à dit de le mettre à côté de la classe durée. A coté, c'est donc dedans ou dans un fichier séparé ?

          -
          Edité par davidzkitischwili 24 juin 2019 à 16:54:18

          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2019 à 17:00:38

            Bonjour,

            Tu devrais, comme te l'as dit Ksass' Peuk abandonner le cours c++ d'openclassrooms dès maintenant (je pèse mes mots), tu n'y perdra rien au change. Embraye direct sur celui de zeste de savoir où celui de GBDivers (voir les liens dans le message de Ksass' Peuk). Car avec le cours d'OC, tu vas apprendre plein de mauvaises pratiques qui seront difficiles à oublier par la suite(j'en sais quelque chose , j'ai commencé par le cours d'OC de c++, je m'en suis mordu les doigts après).

            • Partager sur Facebook
            • Partager sur Twitter

            Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

              24 juin 2019 à 18:19:07

              (@Fvirtman, c'est volontaire la définition de cet opérateur ternaire?)
              • Partager sur Facebook
              • Partager sur Twitter
              C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                24 juin 2019 à 20:54:06

                lmghs a écrit:

                (@Fvirtman, c'est volontaire la définition de cet opérateur ternaire?)


                Ah oui, j'ai repris son code rapidos, j'ai pas vu
                • Partager sur Facebook
                • Partager sur Twitter

                Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                Incompréhension avec les opérateurs de comparaison

                × 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