当我执行此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;
答案 0 :(得分:1)
这是一个常见的范围错误
{
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;
}
}