initialization of 'element' is skipped by 'case' label

C++Debugging

C++ Problem Overview


I don't understand why I am getting the error:

> initialization of 'element' is skipped by 'case' label.

Can someone please explain to me?

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

C++ Solutions


Solution 1 - C++

Try wrap case with {}, and put all your statement inside {}.

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

You should put all these statement in functions, keep case statement clear. For example, write this style:

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

See link

Solution 2 - C++

When a variable is declared in one case, the next case is technically still in the same scope so you could reference it there but if you hit that case without hitting this one first you would end up calling an uninitialised variable. This error prevents that.

All you need to do is either define it before the switch statement or use curly braces { } to make sure it goes out of scope before exiting a specific case.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionComputernerdView Question on Stackoverflow
Solution 1 - C++billzView Answer on Stackoverflow
Solution 2 - C++Rhys ThompsonView Answer on Stackoverflow