0

キーボードを使用して可変ケースを使用できるかどうか疑問に思っていましたか? したがって、ケースは a から z までの任意の選択肢であり、その完全な可変性があります。たとえば、選択肢 a)、b)、および c) のみが 1 つの条件で表示され、別の条件では a)、b)、c)、d) および e) が表示される場合があります。 . それらはすべて同じ関数を呼び出しますが、異なる引数を入力するとします。

    char choice;
int i;
while(true)
{
            // This increments from char 'a' onward to 'b', 'c', 'd', etc.
    for (i = 0; i < number; i++){
            char character = 'a';
            cout << static_cast<char>(character + i) << ") list of choices" << endl;
    }

    cin >> choice;

    switch(choice) {

                    // Same incremental principal to achieve variable cases
        for (i = 0; i < number; i++){
                char character = 'a';
                character = (static_cast<char>(character + i) );

        case character: carryOutJob(argumentDependantOnCharacter);
        }
            }
    }

これに似たコードを実行すると、次のようなエラーが表示されます。

: error: ‘character’ cannot appear in a constant-expression
: error: jump to case label [-fpermissive]
: error:   crosses initialization of ‘char character’
: error: expected ‘;’ before ‘}’ token
 Error 1
4

2 に答える 2

1

C ++の規則ではcase、式は定数でなければならないため、コンパイラはコンパイル時にそのコードを作成できます。さらに、一度に1文字をチェックする場合、なぜ使用しないのifですか?

于 2012-10-14T00:33:59.557 に答える
0

また、C++ で知る限り、switch ステートメントのケース ラベルを文字列にすることはできません。少し前に学校の課題でこれを試したところ、途方もない量のトラブルに遭遇しました。

于 2012-10-14T02:48:50.420 に答える