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
| // .h
struct TimeRepresentation {
timeval tv; // deux time_t
};
struct Date {
friend struct Duree;
....
Date & operator+=(Duree const& duree);
Date & operator-=(Duree const& duree);
private:
TimeRepresentation tr_;
};
struct Duree {
friend struct Date;
....
Duree & operator+=(Duree const& duree);
Duree & operator-=(Duree const& duree);
Duree & operator+=(Date const& date);
Duree & operator-=(Date const& date);
Duree & operator*=(double);
private:
TimeRepresentation const& getTR() const { return tr_; } // pour les amis
TimeRepresentation tr_;
};
// pas amis, c'est inutile!
Date operator+(Date const& lhs, Duree const& rhs);
Date operator+(Duree const& lhs, Date const& rhs);
Duree operator+(Duree const& lhs, Duree const& rhs);
Duree operator-(Date const& lhs_, Date const& rhs_)
// op*(duree, double), (double, duree), ... |