C++:在 switch 语句内构造数组

2024-04-08

我正在尝试构建一个具有几种不同配置的数组,其中将随机选择一个配置。我首先尝试的代码是:

void createArray() {
    int* tileVals;
    int randInt = rand() % 3;
    switch (randInt) {
    case 0:
            int tileVals[] = {1,1,1,2,2,2,3,3,3};
            break;
    case 1:
            int tileVals[] = {1,1,1,1,2,2,3,3,3};
            break;
    case 2:
            int tileVals[] = {1,1,1,1,2,2,2,3,3};
            break;
    }
    // Do stuff with tileVals
}

但我得到了编译器错误:

src/Board.cpp:67:7: error: redefinition of 'tileVals'
        int tileVals[] = {1,1,1,1,2,2,2,3,3};
src/Board.cpp:70:7: error: redefinition of 'tileVals'
        int tileVals[] = {1,1,1,2,2,2,2,3,3};
...

我接下来尝试:

void createArray() {
    int* tileVals;
    int randInt = rand() % 3;
    switch (randInt) {
    case 0:
            int case0[] = {1,1,1,2,2,2,3,3,3};
            tileVals = case0;
            break;
    case 1:
            int case1[] = {1,1,1,1,2,2,3,3,3};
            tileVals = case1;
            break;
    case 2:
            int case2[] = {1,1,1,1,2,2,2,3,3};
            tileVals = case2;
            break;
    }
    // Do stuff with tileVals
}

但这返回了编译器错误:

src/Board.cpp:85:2: error: switch case is in protected scope
    case 6:
         ^
src/Board.cpp:82:7: note: jump bypasses variable initialization
    int case5[] = {1,1,1,2,2,3,3,3,3};
...

我知道我可以通过在每个 case 语句中使用 for 循环来实现这一点,然后将值分配给在 switch 语句外部创建的tileVals 数组,但这似乎不是一种非常有效的方法。有没有更好的办法?谢谢。


如果不修改内容tileVals在后面的代码中,你可以这样做:

void createArray() {
    int * tileVals;
    int randInt = rand() % 3;
    int cases[][9] = { {1, 1, 1, 2, 2, 2, 3, 3, 3},
                       {1, 1, 1, 1, 2, 2, 3, 3, 3},
                       {1, 1, 1, 1, 2, 2, 2, 3, 3} };
    tileVals = cases[randInt];
    // Do stuff with tileVals
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:在 switch 语句内构造数组 的相关文章

  • 计算 XML 中特定 XML 节点的数量

    请参阅此 XML
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 以编程方式读取 SQL Server 查询计划建议的 SQL 特定执行的索引?

    如果我在 SSMS 中运行此命令 set showplan xml on GO exec some procedure arg1 arg2 arg3 GO set showplan xml off GO 我获得查询执行中涉及的完整调用堆栈的
  • Swift 使用哪种通用排序算法?它在排序数据上表现不佳

    我一直在挑选和探索 Swift 标准库sort 其函数为Array类型 令我惊讶的是 我注意到它在已经排序的数据上表现不佳 对数组进行排序Int打乱顺序似乎比对已经排序的同一个数组进行排序快 5 倍 对已打乱顺序的对象数组进行排序比对已按排
  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 可访问性不一致:参数类型的可访问性低于方法

    我试图在两个表单之间传递一个对象 基本上是对当前登录用户的引用 目前 我在登录表单中有一些类似的内容 private ACTInterface oActInterface public void button1 Click object s
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 如何使用 C++11 using 语法键入定义函数指针?

    我想写这个 typedef void FunctionPtr using using 我该怎么做呢 它具有类似的语法 只不过您从指针中删除了标识符 using FunctionPtr void 这是一个Example http ideone

随机推荐

  • 忽略 doxygen 注释块中的行

    是否可以在 doxygen 注释块中包含将被 doxygen 忽略的内容 换句话说 我们可以在 doxygen 评论块中发表评论吗 背景 我们正在将 Fortran 项目的代码内注释转换为 doxygen 可解析的格式 但是该项目要求代码内
  • C 中的可变长度数组并就地初始化[重复]

    这个问题在这里已经有答案了 C99 允许定义具有非常量大小的数组 即用于定义数组的大小可以在运行时更改 解释它的代码片段是 void dummy function1 unsigned int length char arrA length
  • 什么是沼泽图?

    有人告诉我沼泽图 解释说它们可以通过测量给定产品的传入缺陷率和传出修复率来预测代码质量 不幸的是 我无法找到有关这些图表的更多信息 我想知道这是否是特定于一家公司的术语 你能解释一下什么是沼泽图吗 您可以在这篇关于 CESR 的调试和性能特
  • 在Python中获取不带扩展名的文件名

    如果我有一个类似于以下之一的文件名 1 1 1 1 1 jpg 1 1 jpg 1 jpg 我怎样才能只获取文件名 而不获取扩展名 正则表达式合适吗 在大多数情况下 您不应该为此使用正则表达式 os path splitext filena
  • 如何在异步管道上使用自定义管道?

    我正在尝试在异步管道上创建自定义管道 我尝试了很多解决方案 但仍然不起作用 这是代码片段 Product sort ts 自定义管道 import PipeTransform Pipe from angular core import Ob
  • Angular 4 属性在构建时的对象类型上不存在

    我正在使用 Angular 构建一个项目 我使用 angular cli 启动了该项目 当我尝试运行时ng build prod我不断收到此错误 对象类型上不存在属性 描述 生成此错误的代码如下 export class AppCompon
  • 基于 Spring Java 的静态方法配置

    任何人都可以请建议为什么我们需要使用 a 来声明 PropertySourcesPlaceholderConfigurer beanstatic方法 我刚刚发现 如果我在下面使用非静态 那么 url 将被设置为空值 而不是从属性文件中获取
  • 使用 JavaScript 对象文字表示法的 JavaScript 构造函数

    使用对象字面量表示法在 JavaScript 中构建构造函数的最佳方法是什么 var myObject funca function funcb function 我希望能够打电话 var myVar new myObject 并将参数传递
  • 使用 JavaScript 关闭 Youtube 注释

    目前我知道有三种方法可以禁用 YouTube 视频中的注释 您可以使用 YouTube 设置 这对我不起作用 因为我没有 也不想要 帐户 您可以使用专门的扩展 这可能有用 但我不想为此而拥有一个带有大量选项的成熟扩展 您可以使用 广告 拦截
  • PHPUnit ReflectionException 方法套件不存在

    我正在使用 PHPUnit 版本 3 6 2 并且总是得到 PHP ReflectionException 第 113 行 pathTo pear PHPUnit Runner BaseTestRunner php 中不存在方法套件 运行单
  • 如何通过eclipse连接mysql数据库

    我有一个在 eclipse kepler 中运行的应用程序 我的数据库位于AWS RDS MySQL类型上 我已经导入 mysql connector java gpl 5 1 31 msi 和 aws java sdk 1 8 5 jar
  • 无法使用 WiX 安装程序创建注册表项值

    以下组件按预期执行所有操作 但无法写入最后一个注册表项值 我没有收到任何错误
  • 无法找到哈希字符串“android-P”的目标

    我正在跟进this https codelabs developers google com codelabs mdc 101 java 1教程页面 我得到了与他们在该页面中所说的完全相同的错误 无法在以下位置找到哈希字符串 android
  • 使用 Twitter API 可以追溯到多久以前

    我用 C 开发了一个应用程序 可以将推文提取到数据库中 我目前正在使用 TweetSharp Wrapper 由于最近宣布 Twitter 现在已经对之前的所有推文建立了索引 这使您可以返回到最初的推文 因此我开始怀疑是否有可能返回到某个时
  • RMarkdown 文档中的条件格式表

    例如 我可能想使用以下规则为单元格着色 编辑为不平凡 如果 gt 4 则呈蓝色 如果 3 5 则不填充 如果 gt 3 且 如果 使用 RMarkdown knit 创建具有条件格式的表格 https stackoverflow com q
  • Django:如何允许可疑文件操作/复制文件

    我想做一个SuspiciousFileOperationdjango 默认是不允许的 我正在编写一个命令 通过运行manage py importfiles 在我自己编写的 Django 文件存储中导入真实文件系统上给定的目录结构 我想 这
  • 如何让 js-mode 正确缩进连续(复合?)var 声明?

    如果我使用不同的var类似的陈述 function stretchDiv var wh window height var sz2 wh paddingTop paddingBottom mainTop 2 2 the scrollbar
  • 为什么这里断言失败

    为什么当我创建一个时断言在这里失败CvMat 我使用指针加载到 cv Mat 中的图像不会发生这种情况 struct RGB unsigned char b g r cv Point p RGB data CvMat mat cvCreat
  • iOS 14 上的 Arkit/SceneKit 抛出新警告(金属)

    自从升级到 iOS14 以来 每当我向场景添加基本节点时 我都会收到金属警告 我不使用任何阴影 只使用标准材质 2020 09 24 18 51 04 548764 0100 Arvie AR 383 7987 Metal Compiler
  • C++:在 switch 语句内构造数组

    我正在尝试构建一个具有几种不同配置的数组 其中将随机选择一个配置 我首先尝试的代码是 void createArray int tileVals int randInt rand 3 switch randInt case 0 int ti