У меня есть оператор switch
в моем коде C++, и я хочу объявить и использовать переменную внутри case
этого оператора. Переменная будет использоваться только внутри области действия этого конкретного 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;
}
Я попытался просто объявить, инициализировать и использовать переменную (int someInt
) только внутри этого case
, но это дало мне несколько ошибок компиляции... Столкнувшись с этим вопросом на SO: Почему переменные не могут быть объявлены в операторе switch?, я попытался сделать то, что предложил ответ, и добавил {}
к рассматриваемому case
, поэтому мой switch
теперь выглядит так:
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;
}
Но теперь я получаю ошибки компиляции, которые говорят: «необъявленный идентификатор» для переменной (commonData
), которая используется в случае xyz
для switch
.
Посмотрев на это, кажется, что эта переменная объявлена внутри abc
случая switch
... Очевидно, что, поскольку я добавил {}
к abc
, пытаясь использовать его вне abc
, теперь я пытаюсь использовать это выходит за рамки его объявления.
Так почему же я не могу объявить/использовать someInt
так же, как commonData
был объявлен/использован без необходимости {}
внутри case
, где он объявлен?