C ++ Declaring a variable inside a switch statement

I have an operator switchin my C ++ code and want to declare and use a variable inside casethis operator. This variable will be used only within the scope case.

switch(mode)
{
case abc:
    ...
    struct commonData;
    commonData = manager->getDataByIndex(this->Data.particularData);
    int someInt = 1;
    ...
    break;
case xyz:
    ...
    commonData = Manager->getDataByIndex(this->Data.particularData);
    break;
default:
    ...
    break;
}

I tried just declaring, initializing and using the variable ( int someInt) only inside this case, but it gave me some compilation errors ... Having this question in SO: Why are variables not declared in the switch statement? I tried to do what the answer suggested and added {}to case, so mine switchnow looks like this:

switch(mode)
{
case abc:
    {
    ...
    struct commonData;
    commonData = manager->getDataByIndex(this->Data.particularData);
    int someInt = 1;
    ...
    break;
    }
case xyz:
    ...
    commonData = manager->getDataByIndex(this->Data.particularData);
    break;
default:
    ...
    break;
}

, : "uneclared identifier" (commonData), xyz switch.

, , ​​ abc switch... , , {} abc, abc, .

, / someInt , commonData / {} case, ?

+4
4

, switch: switch .

, commonData ( ), , int someInt;. int someInt = 1; , , mode abc.

, commonData , ​​ ( " commonData?" case block), . {} case " commonData , . commonData .

, commonData case switch, . - :

switch(mode)
{
    SomeType commonData;
case abc:
    {
    ...
    commonData = manager->getDataByIndex(this->Data.particularData);
    int someInt = 1;
    ...
    break;
    }
case xyz:
    ...
    commonData = manager->getDataByIndex(this->Data.particularData);
    break;
default:
    ...
    break;
}

:

switch(mode)
{
case abc:
    SomeType commonData;
    ...
    commonData = manager->getDataByIndex(this->Data.particularData);
    {
    int someInt = 1;
    ...
    break;
    }
case xyz:
    ...
    commonData = manager->getDataByIndex(this->Data.particularData);
    break;
default:
    ...
    break;
}

, , , .


, struct commonData; "" : , - , . , , .

+3

{ .. } , .

case , switch, switch.

+8

switch orignal, . , .

-1

. :

switch (int number) {
    case 3: { 
        int n = 5; 
        n = n*4; // random
    } break;

    case 4: {
        int a = 4;
        //  n is out of scope
    } break;
};
-2

All Articles