IT TIP

'요소'초기화는 '케이스'레이블에서 건너 뜁니다.

itqueen 2020. 12. 3. 21:33
반응형

'요소'초기화는 '케이스'레이블에서 건너 뜁니다.


이 질문에 이미 답변이 있습니다.

오류가 발생하는 이유를 이해할 수 없습니다.

'요소'의 초기화는 '케이스'레이블에서 건너 뜁니다.

누군가 나에게 설명해 주시겠습니까?

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

랩 시도 case와를 {}, 그리고 모든 문 내부에 넣어 {}.

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

이 모든 명령문을 함수에 넣고 case명령문을 명확하게 유지해야 합니다. 예를 들어 다음 스타일을 작성하십시오.

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

링크 보기


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.

참고URL : https://stackoverflow.com/questions/14669457/initialization-of-element-is-skipped-by-case-label

반응형