1. ホーム
  2. c++

[解決済み] element'の初期化が'case'ラベルでスキップされる [重複].

2022-02-06 15:12:40

質問

なぜエラーが発生するのか理解できません。

element' の初期化は 'case' ラベルによってスキップされます。

どなたか解説をお願いします。

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;

参照 リンク