gpt4 book ai didi

c++ - 在 Switch 语句中声明变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:44 24 4
gpt4 key购买 nike

我有一个函数声明来自两个不同类的两个对象:

 void car (){
int choice;
cout << " What type of car ? ";
cout <<" 1- Fast . 2- Slow.";
cin >> choice;
switch(choice)
{
case 1:
Fast obj1;
obj1.print();
break;
case 2:
Slow obj2;
obj.print();
break;
default:
cout << "No type";
}
}

编译器在以下位置显示错误:

switch(choice)

这是错误

(error: transfer of control bypasses initialization of:
variable "obj1" (declared at line 179)
variable "obj2" (declared at line 181)

你能告诉我我做错了什么吗

最佳答案

如错误消息所述,跳转到每个开关标签会传递开关 block 内声明的一个或多个变量的初始化,这是不允许的。

您可以通过在 switch block 内的 block 内限定每个变量的范围来解决此问题:

switch(choice)
{
case 1:
{
Fast obj;
obj.print();
break;
}
case 2:
{
Slow obj;
obj.print();
break;
}
default: cout << "No type";
}

关于c++ - 在 Switch 语句中声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29823012/

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