86 votes

l'initialisation de 'element' est ignorée par 'case' label

Je ne comprends pas pourquoi je reçois cette erreur :

l'initialisation de 'element' est ignorée par l'étiquette 'case'.

Quelqu'un peut-il m'expliquer ?

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;
    }
}

159voto

billz Points 28166

Essayez le wrap case con {} et placez toutes vos déclarations à l'intérieur {} .

case 1:
{
   cout << endl << endl << "Current S = ";
   this->printSet();    
   // and other mess
}
break;

Vous devez placer toutes ces déclarations dans des fonctions, en conservant les éléments suivants case claire. Par exemple, écrivez ce style :

case 1:
   initializeElement();
   break;
case 2:
   doSomethingElse();
   break;

Voir lien

14voto

Rhys Thompson Points 141

Lorsqu'une variable est déclarée dans un case , le suivant case est techniquement toujours dans la même portée, vous pouvez donc y faire référence, mais si vous frappez ce case sans toucher celle-ci en premier, vous finiriez par appeler une variable non initialisée. Cette erreur permet d'éviter cela.

Tout ce que vous avez à faire est de le définir avant le programme switch ou utiliser des accolades { } pour s'assurer qu'il sort du champ d'application avant de quitter un champ d'application spécifique. case .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X