gpt4 book ai didi

c++ - Switch 语句的范围错误

转载 作者:行者123 更新时间:2023-11-28 06:54:50 24 4
gpt4 key购买 nike

当我执行此 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com