Bonsoir � tous;
J'ai un souci avec une portion de mon code c++, peut �tre que �a parait facile mais pour moi non � l'heure qu'il est car j'ai pass� toute ma journ�e sans le r�ussir.
Mon probl�me est que j'ai d�clar� une variable comme static dans une classe(classe bateau) comme vous indique le code ci-dessous:
bateau.h
et dans un autre fichier j'utilise ma variable en y ajoutant des objets de type bateau
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 class bateau{ private: string nomb; float longb; float largb; string annee; Categorie categorie; // qui est soit MONOCOQUES ou MULTICOQUES float tpsTraverse; set<sponsors*> listeSponsor; skipper * chefDeBord;//le chef de bord(skipper) routeur * routeurs;// (le routeur) public: static list<bateau*> listeBateau; // il s'agit de cette variable enum Categorie{MONOCOQUES,MULTICOQUES}; //les bateaux dans notre cas sont de ces deux type typedef enum Categorie Categorie; //constructeur bateau( string nomb, float longb, float largb, string annee, Categorie cat); }; #endif
Menu.cpp
et enfin dans mon fichier qui contient le main, je fais ceci:
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 void Menu::creationBateaux(string fileName){ ifstream fichier(fileName.c_str(),ios::in); if(fichier) { string ligne; string element; string tabBateau[5]; //tableau qui contiendra les caracteristique du futur bateau int index,catBat;float longb,largb; while(getline(fichier,ligne)){ index=0; stringstream lig(ligne); while (std::getline(lig, element, ':')){//decouper chaque ligne en ses composants tabBateau[index]=element; //on stocke chaque element dans une cellule du tableau index++; // } //on cree ici le bateau dont les caracteristiques sont dans le tableau longb=stof(tabBateau[1]);//convertir en float la long du bateau largb=stof(tabBateau[2]);// convertir la larg du du bateau en float catBat=stoi(tabBateau[4]);//categorie du bateau qui est un int, soit 0 soit 1 //cout<<tabBateau[0]<<" "<<tabBateau[1]<<" "<<tabBateau[2]<<" "<<tabBateau[3]<<" "<<tabBateau[4]<<endl; if(catBat==1)//on construit un bateau de catégorie 2 (multicoque) { bateau b(tabBateau[0],longb,largb,tabBateau[3],bateau::MULTICOQUES); //b.afficheBateau(); //this->listeBateau.push_back(&b); bateau::listeBateau.push_back(&b); } else if(catBat==0) //on construit un bateau monocoque(cat 1) { bateau b(tabBateau[0],longb,largb,tabBateau[3],bateau::MONOCOQUES); //b.afficheBateau(); bateau::listeBateau.push_back(&b); //this->listeBateau.push_back(&b); //(*(bateau::listeBateau.begin()))->afficheBateau(); } } fichier.close(); } else cerr << "Impossible d'ouvrir le fichier !"<<endl; //return this->listeBateau; (*(bateau::listeBateau.begin()))->afficheBateau(); // 0; }
main.cpp
le probl�me, quand j'affiche le contenu de ma variable static dans ma fonction void Menu::creationBateaux(string fileName) tout se passe bien il m'affiche bien les objets � l'int�rieur
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 extern list<bateau*>bateau::listeBateau; //definition de la liste d'instance bateau int main(int argc, char const *argv[]) { Menu menu; list<bateau*> liste; //liste=menu.getListeBateau(); //Course course("N° 1"); menu.creationBateaux("bateau.txt"); cout<<bateau::listeBateau.size()<<endl; list<bateau*>::iterator it =bateau::listeBateau.begin(); while(it!=bateau::listeBateau.end()){ (*it)->afficheBateau(); } }
mais dans le main, il me donne ceci
�+��y""
G0�(!p�7 ;"
)!�7 �(!��7 e
@� �'!�7 ��"
�o b'!��7 ��
P���'!P�7 p��
�� J'!��7 ��
@�z'!@�7 �8l>�
��L�(! �7 �x
���_�"
0�Y�(!��7 (!��7 ��"
P"^CҶ"
et ce qui est paradoxale, la taille de ma liste( variable static) s�incr�mente � chaque ajout.
Je pr�cise que j'ai pas de probl�me d'inclusion en tout cas rien n'est signal� concernant.
Merci d'avance.
Partager