Salut,
Une petite question au passage...
Pourquoi ne fais tu pas l'inverse, à savoir, maintenir la durée sous la forme la plus petite qui puisse t'intéresser: la minute :question:
En effet, lorsque tu veux effectuer des opérations mathématiques entre deux durées, tu dois:
- calculer le résultat (en minutes) de la première
- calculer le résultat (en minutes) de la seconde
- faire l'opération qui t'intéresse
- convertir tout cela en jour, heure, minutes (pour que ta classe telle qu'elle se présente pour l'instant reste cohérente).
En maintenant, au niveau de ta classe, la durée sous la forme d'un nombre unique représentant les minutes, il devient facile de faire les différentes opérations mathématique: YAKA enregistrer le résultat de l'opération, et basta...
Si tu trouve intéressant de pouvoir récupérer le nombre d'heures entières ou de jours entiers que représente cette durée, les deux fonctions membres qu'il te faut créer sont relativement simple:
Code:
1 2
| int Duree::nombreJour() const{return val/(24*60);}
int Duree::nombreHeure() const{return val/64;} |
Et si, enfin, tu veux récupérer une structure proche de
Code:
1 2 3 4 5 6
| struct DureeLisible
{
int jours;
int heures;
int minutes;
}; |
parce que cela peut s'avérer intéressant "par ailleurs", il t'est toujour possible de créer un opérateur de conversion, voir d'utiliser le constructeur de DureeLisible qui prendra... un nombre de minutes (potentiellement supérieur à 60) qui agira comme tel ;)
Mais ce qu'il faut comprendre, c'est que les deux structures / classes ont, chacune, leur intérêt particulier:
La première (telle que je l'ai présentée) n'a comme seule utilité d'effectuer des calculs, l'autre n'a comme seule utilité de permettre de les représenter de manière "humainement lisible"... à toi de choisir, quand tu veux travailler avec des durées, celle qui correspond à tes besoins ;)