C++ Switch()Bug

J. *_*Doe 1 c++ switch-statement

我一直在开发一个使用该switch()功能的项目,如下所示:

switch (selectedMenu) {
    case 1:
        switch (selectedIndex) {
            case 0:
                invisibility = !invisibility;
                break;
            case 1:
                invincibility = !invincibility;
                break;
            case 2:
                superjump = !superjump;
                break;
            case 3:
                //Option 4
                break;
            case 4:
                //Option 5
                break;
        }
    case 2:
        switch (selectedIndex) {
            case 0:
                //Option 2
                break;
            case 1:
                //Option 2
                break;
            case 2:
                //Option 3
                break;
            case 3:
                //Option 4
                break;
            case 4:
                //Option 5
                break;
        }
    case 3:
        switch (selectedIndex) {
            case 0:
                //Option 2
                break;
            case 1:
                //
                break;
            case 2:
                //Option 3
                break;
            case 3:
                //Option 4
                break;
            case 4:
                //Option 5
                break;
        }
    case 4:
        switch (selectedIndex) {
            case 0:
                //Option 2
                break;
            case 1:
                //Option 2
                break;
            case 2:
                //Option 3
                break;
            case 3:
                //Option 4
                break;
            case 4:
                //Option 5
                break;
        }
    case 5:
        switch (selectedIndex) {
            case 0:
                //Option 2
                break;
            case 1:
                SET_ENTITY_COORDS(pedID, -75.015, -818.215, 326.176);
                break;
            case 2:
                //Option 3
                break;
            case 3:
                //Option 4
                break;
            case 4:
                //Option 5
                break;
        }
}
Run Code Online (Sandbox Code Playgroud)

我的代码遇到了错误.

问题

case 5 -> case 1这条线上:SET_ENTITY_COORDS(pedID, -75.015, -818.215, 326.176);它应该将实体传送到某个位置.当我在这个传送案例上面的任何一个案例中使用一个选项时,它将传送实体,即使它不属于这种情况.

这很难解释,所以让我们画一幅画:

在此输入图像描述

如何调整它以便它只启用我在案例中指定的功能而不是它上面的所有功能?

(我如何调整它以便它只启用superjump而不是superjump和传送用户?)

Mic*_*urr 5

您需要break针对外部switch案例的陈述:

switch (selectedMenu) {
    case 1:
        switch (selectedIndex) {
            // blah, blah, blah...
        }
        break;      // <-- this
    case 2:
        switch (selectedIndex) {
            // blah, blah, blah...
        }
        break;      // <-- this
    case 3:
        switch (selectedIndex) {
            // blah, blah, blah...
        }
        break;      // <-- this
    case 4:
        switch (selectedIndex) {
            // blah, blah, blah...
        }
        break;      // <-- this
    case 5:
        switch (selectedIndex) {
            // blah, blah, blah...
        }
        break;      // <-- this
}
Run Code Online (Sandbox Code Playgroud)