Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Switch语句的作用域错误_C++_Scope_Switch Statement_Declaration - Fatal编程技术网

C++ Switch语句的作用域错误

C++ Switch语句的作用域错误,c++,scope,switch-statement,declaration,C++,Scope,Switch Statement,Declaration,当我执行这个switch语句时,我得到了以下错误:错误:“Ptr”未在此范围内声明。我不明白为什么会发生这种情况,因为我正在动态分配Ptr。如果删除大括号,则会出现错误:“Ptr”之前的声明为“(//类名)*Ptr”。我该如何解决这个问题?谢谢 switch(i){ case 0:{ Class0* Ptr = new Class0; } case 1:{ Class1* Ptr = new Class1; break;

当我执行这个switch语句时,我得到了以下错误:错误:“Ptr”未在此范围内声明。我不明白为什么会发生这种情况,因为我正在动态分配Ptr。如果删除大括号,则会出现错误:“Ptr”之前的声明为“(//类名)*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;
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;
}
}