在Switch语句中声明变量

Kha*_*han 1 c++ switch-statement

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

 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";
   } 
 }
Run Code Online (Sandbox Code Playgroud)

编译器显示错误:

switch(choice)
Run Code Online (Sandbox Code Playgroud)

这是错误

(error: transfer of control bypasses initialization of:
variable "obj1" (declared at line 179)
variable "obj2" (declared at line 181)
Run Code Online (Sandbox Code Playgroud)

你能告诉我我做错了吗?

Mik*_*our 8

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

您可以通过在开关块内的块内查找每个变量来解决此问题:

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