M2103-TP1-Exo4

Remarque préliminaire : cet exercice ne peut être effectué qu’après l’exercice 3 de ce même TP
CDuree – Compilation séparée.

Construire le projet DureeConstrDfltCopyDestr.

Recopier les sources du projet DureeCompilSeparee dans le répertoire Sources du projet DureeConstrDfltCopyDestr.

Fonction display

Afin de rendre l’affichage plus concis, remplacer l’affichage initial, de la forme :

    12 jour(s)  2 heure(s)  3 minute(s) 55 seconde(s)

par

[    12:02:03:55]

Pour cela, vous devez utiliser le manipulateur setfill() en lui passant en paramètre le caractère de remplissage à gauche du chiffre le plus significatif : ' ' pour les jours, et '0' pour les autres valeurs.

Remarques

  1. setfill() a un effet permanent, jusqu’à la prochaine modification explicite du caractère de remplissage.

    Ceci implique qu’après l’avoir modifié, pensez à le restaurer à la valeur par défaut (l’espace).

  2. Lire aussi la fonction fill()

Destructeur

A la classe Duree, ajouter le destructeur qui se contente d’afficher le contenu de l’objet détruit (fonction display())).

Ajouter au constructeur l’affichage du contenu de l’objet construit (fonction display())).

Dans la fonction testCDuree(), commencer par redimensionner (resize()) le vecteur (vector) à 10 éléments (cela doit suffire pour le fichier FichDurees) et remplacer la fonction push_back() par une écriture indicée.

Compiler et tester.

Vous constatez une erreur de compilation.

Les raisons sont expliquées par le fonctionnement du constructeur par défaut et par celui de la fonction resize()‘ des cours consacrés à la classe vector.

Constructeur par défaut

Ajouter des valeurs par défaut aux paramètres du constructeur et des fonctions incr() et decr().

Compiler et tester.

Identifier les affichages provoqués par les appels de tous les destructeurs.

Constructeur par recopie

A la classe Duree, ajouter la surcharge du constructeur par recopie.

Y ajouter provisoirement un affichage permettant de montrer qu’il est appelé.

Avant la fonction testDuree(), ajouter dans l’espace de noms anonyme la fonction suivante :

void fct (Duree durDur)
{
	cout << "Affichage de durDur : ";
	durDur.afficher ();
	cout << '\n'; 

} // Fct()

Tester avec le fichier FichDurees téléchargé précédemment.

Analyser et comprendre tous les affichages.

N’oubliez pas de sauvegarder tous vos fichiers sources sur github.