Bonjour,
Ma classe date ne fonctionne pas pourtant je crois que je l'ai bien implémentée.

voilà le code de date.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#if !defined(__DATE__H__)
#define __DATE__H__
#include <iostream>
 
 
class Date{
  public:
   Date();  
   Date(int j, int h, int m);                
 
   bool operator <(const Date& date) const;
    bool operator <=(const Date& date) const;
 
  private:
 
  int jours; 
  int heures; 
  int minutes;                      
 
  friend std::ostream& operator << (std::ostream&, const Date& date);
  friend std::istream& operator >> (std::istream&, Date& date);
};
 
#endif
et voilà date.cpp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "date.h"
#include <cstdio>
#include <iomanip>
#include <assert.h>
#include<iostream>
 
Date::Date()
{
    jours= 0;
    heures= 0;
    minutes= 0;
}
 
Date::Date(int j,int h,int m){
 
 
    jours = j;
    heures = h;
    minutes = m;
}
 
bool Date::operator <(const Date& d) const{
 
     return (this->jours < d.jours);
     return (this->heures < d.heures);
     return (this->minutes < d.minutes);
}
 
bool Date::operator <=(const Date& d) const{
 
     return (this->jours <= d.jours);
     return (this->heures <= d.heures);
     return (this->minutes <= d.minutes);
 
}
 
std::ostream& operator << (std::ostream& os, const Date& d){
    int jours, heures, minutes;
    //completed
    jours = d.jours;                 
    heures = d.heures;              
    minutes = d.minutes;          
    char chaine[40];
    sprintf(chaine, "%dj_%02dh%02dm", jours, heures, minutes);
    os << chaine;
    return os;
}
 
std::istream& operator >> (std::istream& is, Date& d){
    char chaine[40];
    int jours, heures, minutes;
    char j, m, h, underscore;
    is >> jours >> j >> underscore >> heures >> h >> minutes >> m;
    assert(j=='j');
    assert(underscore=='_');
    assert(h=='h' && m=='m');
 
    // completed  :utiliser les variable jours,heures,minutes pour modifier l'objet d.
    d.jours = jours;              
    d.heures = heures;            
    d.minutes = minutes;          
 
    return is;
}
voilà le résultat de la compilation:

testdate.cpp: (.text+0xe5): référence indéfinie vers « Date:: Date() »
testdate.cpp: (.text+0xfe): référence indéfinie vers « operator>>(std::istream&, Date&) »
testdate.cpp: (.text+0x11f): référence indéfinie vers « operator<<(std::ostream&, Date const&) »
testdate.cpp: (.text+0x215): référence indéfinie vers « Date::operator<(Date const&) const »
testdate.cpp: (.text+0x2b0): référence indéfinie vers « operator<<(std::ostream&, Date const&) »
testdate.cpp: (.text+0x2c8): référence indéfinie vers « operator<<(std::ostream&, Date const&) »
testdate.cpp: (.text+0x337): référence indéfinie vers « Date::operator<(Date const&) const »
testdate.cpp: (.text+0x3d2): référence indéfinie vers « operator<<(std::ostream&, Date const&) »
testdate.cpp: (.text+0x3ea): référence indéfinie vers « operator<<(std::ostream&, Date const&) »
testdate.cpp: (.text+0x447): référence indéfinie vers « Date::operator<(Date const&) const »
testdate.cpp: (.text+0x4df): référence indéfinie vers « operator<<(std::ostream&, Date const&) »
testdate.cpp: (.text+0x4f7): référence indéfinie vers « operator<<(std::ostream&, Date const&) »
collect2: error: ld returned 1 exit status


Est ce que quelqu'un peut m'aider sur ça SVP.Merci davance.