Je ne comprends pas pourquoi je reçois l'erreur:
l'initialisation de 'élément' est ignorée par l'étiquette 'cas'.
Quelqu'un peut-il m'expliquer s'il vous plaît?
void LinkedList::process_example(int choice) {
switch(choice) {
case 1:
cout << endl << endl << "Current S = ";
this->printSet();
cout << "Enter an element :";
char* element = "lol";
//cin>>element;
cin.clear();
cin.ignore(200, '\n');
this->Addelementfromback(element); //error is here
cout << endl << endl << "Current S = ";
this->printSet();
break;
case 2:
this->check_element();
break;
case 3:
cout << endl << endl;
cout << "Current Set S = ";
this->printSet();
cout << endl << "S has ";
int count = this ->check_cardinality();
cout << count << " elements";
break;
}
}
Essayez d’emballer case
avec {}
, et mettez toute votre déclaration à l'intérieur de {}
.
case 1:
{
cout << endl << endl << "Current S = ";
this->printSet();
// and other mess
}
break;
Vous devriez mettre toutes ces instructions dans des fonctions, gardez case
statement clair. Par exemple, écrivez ce style:
case 1:
initializeElement();
break;
case 2:
doSomethingElse();
break;
Voir lien
Quand une variable est déclarée dans un case
, la suivante case
est techniquement toujours dans la même portée, vous pouvez donc la référencer ici, mais si vous tapez cela case
sans toucher celle-ci vous devez d’abord appeler une variable non initialisée. Cette erreur empêche cela.
Tout ce que vous avez à faire est de le définir avant l'instruction switch
ou d'utiliser des accolades { }
pour s’assurer qu’il sort de la portée avant de quitter un case
spécifique.