我的 C++ 代码中有一个 switch
语句,我想在该语句的 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;
}
我尝试在 case
中简单地声明、初始化和使用变量 (int someInt
),但这给了我一些编译错误......遇到过这个问题关于 SO:Why can't variables be declared in a switch statement? ,我尝试按照答案的建议进行操作,并将 {}
添加到有问题的 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;
}
但我现在收到编译错误,指出:“未声明的标识符”在 的
。xyz
案例中使用的变量 (commonData
)切换
查看了这个 - 似乎这个变量是在 switch
的 abc
案例中声明的......很明显,因为我已经添加了 {}
到 abc
,通过尝试在 abc
之外使用它,我现在尝试在其声明范围之外使用它。
那么为什么我不能像声明/使用commonData
一样声明/使用someInt
而不需要{
在 case
声明的地方?
最佳答案
{ .. }
创建一个局部作用域,因此您的变量声明在另一个作用域中将不可见。
在局部范围内为每个 case
添加声明,或者,如果您想在 switch 语句之外使用变量,请在 switch
之前声明它。
关于c++在switch语句中声明一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105365/