Switch dans fonction membre
Salut!
Voilà mon problème:
J'ai une classe (qui s'occupe de la partie gestion des pieces d'un hopital en mode texte toute simple) avec en private :
Code:
1 2 3 4 5 6 7 8 9 10
|
enum piec{
reception=0,
cabinet_generaliste=1,
infirmerie=2,
WC=3,
salle_operation=4,
radiologie=5,
soins_intensifs=6,
repos=7}; |
Pour gérer le nombre de pieces (qui pourrait être important) bah je fais appel à un vector (et j'veux utiliser que sa pour l'instant) et pour construire, je demande à l'utilisateur quel type de piece il veut créer. De la, des variables globales sont incrémentées et des valeurs leurs sont ajoutées:
Code:
1 2 3 4 5 6 7 8 9 10 11
| static int nb_reception=0;
static int nb_cabinet_generaliste=0;
static int nb_infirmerie=0;
static int nb_WC=0;
static int nb_salle_operation=0;
static int nb_radiologie=0;
static int nb_soins_intensifs=0;
static int nb_repos=0;
static int rennovations=0;
static int superficie=0;
static int reputation_pieces=0; |
(pour l'instant je les utilise pas toutes).
Mais, lorsque je veux supprimer une pièce, bah je demande son numéro, et supprime la case qui y correspond dans mon vector. Là, bah faut que je fasse l'inverse de créer. Et j'arrive (enfin) au problème: mon code a une erreur que jarrive, mais vraiment pas du tout à corrgier:
Code:
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
| void supprimer_piece()
{
switch(piec) //premiere erreur ici
{
case 0: { //seconde ici
nb_reception--;
superficie-=6;
reputation_pieces-=5;
break;}
case 1:{
nb_cabinet_generaliste--;
superficie-=10;
reputation_pieces-=75;
break;}
case 2:{
nb_infirmerie--;
superficie-=7;
reputation_pieces-=30;
break;}
case 3: {
nb_WC--;
superficie-=20;
reputation_pieces-=10;
break;}
case 4: {
nb_salle_operation--;
superficie-=50;
reputation_pieces-=250;
break;}
case 5: {
nb_radiologie--;
superficie-=30;
reputation_pieces-=170;
break;}
case 6: {
nb_soins_intensifs--;
superficie-=75;
reputation_pieces-=200;
break;}
case 7:{
nb_repos--;
superficie-=150;
reputation_pieces-=135;
break;}
}
} |
Et cette saleté de compilateur me met:
Citation:
Le compilateur me dit:
--E:\Guillaume\Classe piece.cpp In member function `void Piece::supprimer_piece()':
--108 E:\Guillaume\Classe piece.cpp syntax error before `;' token
--E:\Guillaume\Classe piece.cpp At global scope:
--111 E:\GuillaumeClasse piece.cpp parse error at end of saved function text
Pour vous aider, ma fonction qui n'est pas membre de ma classe (void supprimer_piece() l'etait) et qui s'occupes de supprimer une piece de vector :
Code:
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
|
{
system("cls");
int numero=0;
char choix;
cout<<"Entrez le numero (de la liste des pieces) : "<<flush;
fflush(stdin);
cin>>numero;
if(numero>=liste_pieces.size())
{
cout<<"Cette) piece) n\'existe pas "<<endl;
system("PAUSE>nul");
}
else
{
liste_pieces[numero].afficher_piece();
cout<<"Voulez-vous licencier cette piece? (o/n) : "<<flush;
fflush(stdin);
cin>>choix;
cout<<endl;
if((choix=='o')||(choix=='O'))
{
liste_pieces[numero].supprimer_piece();
for(int i=numero;i<liste_pieces.size();i++)
{
liste_pieces[i]=liste_pieces[i+1];
}
liste_pieces.resize(liste_pieces.size()-1);
}
else
cout<<"La piece n\'a pas ete detruite"<<endl;
system("PAUSE>nul");
}
} |
Voilà, alors j'ai essayé de remplacer par des 'if', c'est pareil, memes erreurs, j'ai aussi essayé de mettre des { et } aux switch, marche pas nan plus ...
J'en ai deduis que sa venait pas du contenu de la fonction ...
Merci de m'aider, ces erreurs m'ont vraiment foutu les b**les aujourd'hui :wink: .