为什么我无法在switch-case块中实例化对象

lov*_*esh 8 c++ block instantiation switch-statement

我的代码有3个类n_hexa,n_octa,n_bin.代码在这里

switch(choice)
{
case 1: cin>>n; 
 n_hexa nx(n);
        break;
case 2: cin>>n; 
 n_octa no(n);
        break;
case 3: cin>>n;
 n_bin nb(n);
        break;
}
Run Code Online (Sandbox Code Playgroud)

在编译它时,为n_octa行提供消息" n_hexa的初始化 "

Ebo*_*ike 11

如果要在案例中包含临时对象,则需要正确对其进行范围调整.

switch(choice)
{
    case 1:
    {
         cin>>n; 
         n_hexa nx(n);
         break;
    }
    case 2:
    {
         cin>>n; 
         n_octa no(n);
         break;
    }
    case 3:
    {
         cin>>n;
         n_bin nb(n);
         break;
    }
}
Run Code Online (Sandbox Code Playgroud)