c ++类切换案例

use*_*499 1 c++ class switch-statement

    switch(choice)
    {
        case 1:
            uinstance1.addNewProduct(data);
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            break;
        case 5:
            break;
        case 6:
            break;
        case 7:
            uinstance1.listAllProducts(data);
            break;
        case 8:
            break;
        case 9:
            break;
        case 10:

            //name,category,barcode,price,manufacturer,noinstock,soldpermonth,expirydate,discount
            //  Perishable(string,string,string,double,string,int,int);
            Perishable item0("Ferrari","Automobile","9999",2999.99,"Popular",5,0);

            data.addNew(item0);

            break;
        default:
            cout<<"Wrong Choice "<<endl;
            system("pause");
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

嗨,我一直在考虑这个错误很长一段时间,似乎无法弄清楚这个问题.

错误C2361:'default'标签跳过初始化'item0':参见'item0'的声明

一些帮助将不胜感激.谢谢

Fox*_*x32 7

整个选择块计为一个范围,如果您在该范围内对变量进行decalare,则需要在每个case语句(每个可能的执行路径)中对其进行初始化.您可以通过在您的情况下创建其他范围来避免此问题(请参阅括号):

switch(choice)
    {
        case 1:
            uinstance1.addNewProduct(data);
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            break;
        case 5:
            break;
        case 6:
            break;
        case 7:
            uinstance1.listAllProducts(data);
            break;
        case 8:
            break;
        case 9:
            break;
        case 10:
            {
                //name,category,barcode,price,manufacturer,noinstock,soldpermonth,expirydate,discount
                //  Perishable(string,string,string,double,string,int,int);
                Perishable item0("Ferrari","Automobile","9999",2999.99,"Popular",5,0);

                data.addNew(item0);
            }
            break;
        default:
            cout<<"Wrong Choice "<<endl;
            system("pause");
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)