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
ç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
}
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.
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
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).
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.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Mon site web de jeux SDL2 entre autres : https://www.ant01.fr
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html