c++ - 为什么我不能在 switch-case block 中实例化对象

标签 c++ block switch-statement instantiation

我的代码有 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;
}

在编译时,它会为 n_octa 行给出一条消息“crosses initialisation of n_hexa

最佳答案

如果您想在 case 中放置临时对象,则需要适本地确定它们的范围。

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;
    }
}

关于c++ - 为什么我不能在 switch-case block 中实例化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4395289/

相关文章:

html - 包含行内 block 元素的 block 元素的高度

java - While 循环没有相应地工作

javascript - 在 switch 语句案例中使用 getElementByID.innerHTML?

c++ - 将数字转换为文本,C++

c++ - 由于 RC 文件的 UTF-8 编码,C++ 项目中出现错误 RC2135

c++ - 实现纯虚函数的必要性是什么

c++ - 调整数组模板

c# - SetupDiEnumDriverInfo 始终返回错误 259(没有更多可用数据)

ios - block 中的弱指针为零

c - 动态矩阵分配 - 使用 malloc 分配连续的整数 block 不起作用