当我执行此 switch 语句时,出现此错误:错误:‘Ptr’未在此范围内声明。我不明白为什么会这样,因为我正在动态分配 Ptr。如果我删除大括号,我会收到错误消息:“Ptr”之前的声明为“(//Class Name)* Ptr”。我该如何解决?谢谢。
switch(i){
case 0:{
Class0* Ptr = new Class0;
}
case 1:{
Class1* Ptr = new Class1;
break;
}
case 2:{
Class2* Ptr = new Class2;
break;
}
case 3:{
Class3* Ptr = new Class3;
break;
}
case 4:{
Class4* Ptr = new Class4;
break;
}
case 5:{
Class5* Ptr = new Class5;
break;
}
}
myMap["key"] = Ptr;
最佳答案
这是一个常见的范围界定错误
{
int j =1;
}
cout<<j<<endl;
j 的值只能在括号内访问,不能在括号外访问,即 cout 语句将给出错误。 您可以使用以下解决方法来完成您的任务。
switch(i){
case 0:{
Class0* Ptr = new Class0;
myMap["key"] = Ptr;
break;
}
case 1:{
Class1* Ptr = new Class1;
myMap["key"] = Ptr;
break;
}
case 2:{
Class2* Ptr = new Class2; myMap["key"] = Ptr;
break;
}
case 3:{
Class3* Ptr = new Class3; myMap["key"] = Ptr;
break;
}
case 4:{
Class4* Ptr = new Class4; myMap["key"] = Ptr;
break;
}
case 5:{
Class5* Ptr = new Class5; myMap["key"] = Ptr;
break;
}
}
关于c++ - Switch 语句的范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23318520/