Nob*_*fer 3 c++ scope switch-statement variable-declaration
我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;
}
Run Code Online (Sandbox Code Playgroud)
我试过简单地声明,初始化和使用变量(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;
}
Run Code Online (Sandbox Code Playgroud)
但我现在收到编译错误,说明:在一个变量(commonData)的"未声明的标识符",在该xyz情况下使用switch.
看看这个 - 似乎这个变量是abc在switch... 的情况下声明的那么显然,因为我已经添加了{}to abc,通过尝试在外面使用它abc,我现在正试图在范围之外使用它它的声明.
那么为什么我不能以声明/使用someInt的方式commonData声明/使用它而不需要声明它的{}内部case?
{ .. } 创建一个本地范围,因此您的变量声明在另一个范围内不可见.
向每个case具有本地范围的声明添加声明,或者,如果要在switch语句之外使用该变量,请在声明之前声明它switch.
| 归档时间: |
|
| 查看次数: |
3836 次 |
| 最近记录: |