Bonjour,
J'ai un problème avec le code suivant (programme qui cree des objets de classe TIME pour stocker et afficher une heure sous la fome hh:mm:ss) :
normalement mon constructeur de copie affiche un message d'erreur si je ne mets pas une heures valide (sous la forme 00:00:00), or dans cette fonction qui retourne un objet de la classe Time je fais une initialisation non valide (33:33:33) (jusque là rien d'anormal vu que mon constructeur ne fais pas de vérification).
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 #include <iostream> #include <iomanip> using namespace std; class Time { private : int m_hours; int m_minutes; int m_secondes; public : Time (float hours) { m_hours = (int) hours; m_minutes = (int) ((hours - m_hours) * 60); m_secondes = 0; } Time (int hours = 0, int minutes = 0, int secondes = 0) : m_hours (hours), m_minutes (minutes), m_secondes (secondes) { cout << "constructeur 3 arguments " << endl; } Time (const Time &t) { if (t.m_hours >= 0 && t.m_hours < 24) { if (t.m_minutes >= 0 && t.m_minutes < 60) { if (t.m_secondes >= 0 && t.m_secondes < 60) { m_hours = t.m_hours; m_minutes = t.m_minutes; m_secondes = t.m_secondes; cout << "Constructeur de copie " << endl; } else { cout << "error" << endl; } } else { cout << "error" << endl; } } else { cout << "error" << endl; } } void display () { cout << setfill ('0') << setw (2) << m_hours << ":" << setw (2) << m_minutes << ":" << setw (2) << m_secondes << endl; } }; Time func () { Time tmp (33,33,33); return tmp; } int main () { Time t1; t1.display (); t1 = func (); t1.display (); return EXIT_SUCCESS; }
par contre quand je fais
t1 = func ();
normalement là il devrait y avoir appel du constructeur de copie (et donc affichage du message d'erreur), or rien du tout t1 recçoit les valeurs 33:33:33
et pas d'erreur.
je comprends pas ce qui cloche )![]()
Partager