Bonjour,
je rencontre un petit problème avec une fonction amie qui a pour but d'accéder à un attribut (vector) d'une autre classe, afin de le trier et
d'enlever les doublons,
pas d'erreur lors de la compilation mais le programme ne fait pas le travail, la classe Calendrier est OK, mais pas la classe Equipes
la fonction semble inopérante: le vector (ListEquipes) qui récupère l'attribut semble vide
Voici le code des différents fichiers, je ne comprend pas pourquoi la fonction amie est inopérante,
merci par avance pour votre aide
Cordialement, Khor
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 //main.cpp #include "Calendrier.hpp" #include "Equipes.hpp" int main() { std::vector<std::string> m_Date; std::vector<std::string> m_Heure; std::vector<std::string> m_EquipDom; std::vector<std::string> m_ScorDom; std::vector<std::string> m_ScorExt; std::vector<std::string> m_EquipExt; Calendrier calendrier(m_Date,m_Heure,m_EquipDom,m_ScorDom,m_ScorExt,m_EquipExt); calendrier.ChargerFic(); calendrier.Afficher(); std::vector<std::string> m_ListEquipes; int m_NbreEquipes=0; Equipes equipes(m_ListEquipes,m_NbreEquipes); equipes.TrierEquipes(m_EquipDom); return 0; }
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
87 //Calendrier.cpp #include <sstream> #include <iostream> #include <fstream> #include "Calendrier.hpp" //#include "Equipes.hpp" Calendrier::Calendrier(std::vector<std::string> m_Date,std::vector<std::string> m_Heure,std::vector<std::string> m_EquipDom,std::vector<std::string> m_ScorDom,std::vector<std::string> m_ScorExt,std::vector<std::string> m_EquipExt) { std::vector<std::string> Date=m_Date; std::vector<std::string> Heure=m_Heure; std::vector<std::string> EquipDom=m_EquipDom; std::vector<std::string> ScorDom=m_ScorDom; std::vector<std::string> ScorExt=m_ScorExt; std::vector<std::string> EquipExt=m_EquipExt; } void Calendrier::ChargerFic() { char nomfichier[20]; std::string ligne; const std::string lim = ";"; std::string enreg; //std::cout << "Entrer le nom d'un fichier existant: "; Le nom sera selectionné à partir d'une boite de dialogue //std::cin.get (nomfichier,20); // get c-string std::ifstream fichier("ANG.txt", std::ios::in); if(fichier) // si l'ouverture a réussi { while ( std::getline( fichier, ligne ) ) { for (int j=0; j<=5; j++) { int deb=0; std::size_t postn = ligne.find(lim); std::string newligne = ligne.substr(postn); enreg = ligne.substr(deb,postn); switch(j) { case 0: Date.push_back(enreg); break; case 1: Heure.push_back(enreg); break; case 2: EquipDom.push_back(enreg); break; case 3: ScorDom.push_back(enreg); break; case 4: ScorExt.push_back(enreg); break; case 5: EquipExt.push_back(enreg); break; } newligne = ligne.substr(postn + 1); deb = postn + 1; ligne = newligne; } } } else std::cerr << "Impossible d'ouvrir le fichier !" << std::endl; } void Calendrier::Afficher() { for (int i=0; i < ScorExt.size(); i++) { std::cout << ScorExt[i] << " "; std::cout << std::endl; } }
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 //Equipes.cpp #include <algorithm> #include <iostream> #include "Equipes.hpp" //#include "Calendrier.hpp" Equipes::Equipes(std::vector<std::string> m_ListEquipes,int m_NbreEquipes) { std::vector<std::string> ListEquipes=m_ListEquipes; int NbreEquipes=m_NbreEquipes; } void Equipes::TrierEquipes(std::vector<std::string> EquipDom) { std::sort(EquipDom.begin(), EquipDom.end()); std::unique_copy(EquipDom.begin(), EquipDom.end(), std::back_inserter(ListEquipes)); int NbreEquipes=ListEquipes.size(); //return ListEquipes; }
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 //Calendrier.hpp #ifndef CALENDRIER_H_INCLUDED #define CALENDRIER_H_INCLUDED #include <vector> #include <string> //#include "Equipes.hpp" class Equipes; class Calendrier { friend void TrierEquipes(std::vector<std::string> EquipDom);//si "AfficherEquipes" seul pas d'erreur mais "TrierEquipes" ne donne rien //friend void AfficherEquipes(std::vector<std::string> CalendEquipDom); //sinon:|error: invalid use of incomplete type 'class Equipes'| private : std::vector<std::string> Date; std::vector<std::string> Heure; std::vector<std::string> EquipDom; std::vector<std::string> ScorDom; std::vector<std::string> ScorExt; std::vector<std::string> EquipExt; public : Calendrier(); Calendrier (std::vector<std::string> m_Date,std::vector<std::string> m_Heure,std::vector<std::string> m_EquipDom,std::vector<std::string> m_ScorDom,std::vector<std::string> m_ScorExt,std::vector<std::string> m_EquipExt); ~Calendrier() = default; void ChargerFic(); void Afficher(); }; #endif //CALENDRIER_H_INCLUDED
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 //Equipes.hpp #ifndef EQUIPES_H_INCLUDED #define EQUIPES_H_INCLUDED #include <vector> #include <string> //#include "Calendrier.hpp" class Calendrier; class Equipes { private: std::vector<std::string> ListEquipes; int NbreEquipes; public: Equipes(); Equipes(std::vector<std::string> m_ListEquipes,int m_NbreEquipes); void TrierEquipes(std::vector<std::string> EquipDom); ~Equipes() = default; }; #endif // EQUIPES_H_INCLUDED
Partager