“开关”语句的作用域错误
Scope Errors with Switch statement
当我执行此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;
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++ 的作用域错误中声明
- C2675 一元运算符由错误的作用域引起
- 在 C++ 中使用 "transform" 会给出一个错误,指出这未在作用域中声明
- C++/错误:表达式必须具有整数或无作用域枚举类型
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 错误:以增量方式填充向量时,表达式必须具有整数或无作用域枚举类型
- 在一个作用域中推送五个对象指针,然后检查对象的布尔值是否为 false,会给出错误
- 错误:数组大小表达式必须具有整型或无作用域枚举类型,而不是'double'
- 错误"未在作用域中声明",但带有接口
- 错误:未在此作用域c++中声明"length"
- 错误:未在此作用域中声明"fileno"
- 错误/usr/include/string.h:652:42:错误:生成caffe时未在此作用域中声明“memcpy”
- C++中的类作用域错误(CLOSED)
- stl的依赖作用域错误
- 声明友元函数时出现变量作用域错误
- 作用域错误,函数没有声明
- 从模板继承:作用域错误
- 指针声明超出作用域错误
- “开关”语句的作用域错误