我可以传递前向声明的枚举值吗?

2024-01-06

当向前传递声明的结构或类时,必须通过引用或指针将其传递给函数。

但是,前向声明的枚举可以做什么呢?它是否还必须通过引用或指针传递?或者说,可以传递一个值吗?

下一个示例使用 g++ 4.6.1 编译良好:

#include <iostream>

enum class E;

void foo( const E e );


enum class E
{
  V1,
  V2
};

void foo( const E e )
{
  switch ( e )
  {
    case E::V1 :
      std::cout << "V1"<<std::endl;
      break;
    case E::V2 :
      std::cout << "V2"<<std::endl;
      break;
    default:
      ;
  }
}

int main()
{
  foo( E::V1);
  foo( E::V2);
}

构建:

g++ gy.cpp -Wall -Wextra -pedantic -std=c++0x -O3

上述标准是否符合标准,或者是否使用了扩展?


声明的枚举,即使您没有指定枚举器(标准称之为枚举器)不透明枚举声明) 是一个完整的类型,因此可以在任何地方使用。

为了完整起见,这里引用 §7.2 第 3 段:

An 不透明枚举声明是一个枚举的重新声明 在当前范围或新枚举的声明中。 [Note:一个 由一个声明的枚举不透明枚举声明已修复 基础类型并且是完整类型。枚举器列表可以是 在稍后的重新声明中使用枚举说明符提供。——尾注 ]

语法为不透明枚举声明,来自同一§7.2的第一段:

不透明枚举声明:

enum-key attribute-specifier-seqopt identifier enum-baseopt;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以传递前向声明的枚举值吗? 的相关文章

  • 创建文件并使用内存流保存到其中

    如何创建文件并使用内存流写入文件 我需要使用内存流来防止其他线程尝试访问该文件 我试图保存到文件的数据是 html 如何才能做到这一点 假设您的意思是如何将文件的内容复制到内存流 如果您使用的是框架4 var memoryStream ne
  • ScrollableControl 在整个控件周围绘制边框

    我正在构建基于的自定义用户控件ScrollableControl 现在我正在尝试在控件周围添加边框 类似于 DataGridView 的边框 我可以使用以下方法绘制边框 e Graphics TranslateTransform AutoS
  • 如何有效地测试action是否用属性(AuthorizeAttribute)修饰?

    我正在使用 MVC 并且有一种情况OnActionExecuting 我需要确定即将执行的Action方法是否用属性修饰 AuthorizeAttribute尤其 我不是问授权是否成功 失败 而是问该方法是否需要授权 对于非 MVC 人员
  • C# SMO 远程数据库备份到本地机器

    我有一个执行 SQL 数据库备份和恢复的应用程序 这在本地计算机上运行良好 但是如果我针对另一台计算机上托管的 SQL 服务器运行此应用程序 则会出现以下错误 Microsoft SqlServer Management Smo Faile
  • 如何使用平台调用编组 void*

    我需要从 dll 中包含的 C api 调用函数 函数原型如下 int func char name void value 其中指针值的内容可以引用依赖于传递的名称的任何类型 我不确定如何设置 Dll 输入端口以正确编组此 void 我一直
  • C++ 中的反向迭代器和负跨步迭代器,在开始之前使用一个作为哨兵

    In 查看 C 反向迭代器的另一种方式 https devblogs microsoft com oldnewthing 20211112 00 p 105908雷蒙德 陈写道 C 语言的一个怪癖 你可以拥有一个指针 集合的 已过终点 但不
  • std::string substr 方法问题

    你好 我正在写这个方法 我希望它从给定缓冲区中提取给定位置的一部分 我有一个像这样的字符串something one something two我想要得到 一个 这是我的想法 static std string Utils getHeade
  • 使用标准范围连接带有分隔符的字符串范围

    我想使用范围将跨度中包含的四个字节转换为字符串 这是输入和输出的示例 std span
  • 如何转换 UTF-8 <-> UTF16 可移植

    有没有一种简单 可移植的方法 至少是 win32 linux 将 UTF 16 转换为 UTF 8 并返回 最好使用升压 谢谢你的帮助 托比亚斯 Both libiconv http www gnu org software libicon
  • 隐式转换和编译器的不同行为

    Motivated by this question https stackoverflow com q 51972738 5800831 I created the following code struct X X int struct
  • 与 webpack 捆绑后,无法读取枚举的未定义属性

    我有一个 React 库 我想使用 Webpack 来构建它 该库是使用 Typescript 编写的 似乎一切正常 但由于某种原因枚举却不起作用 当我将库安装到我的 React 应用程序中时 我发现Cannot read properti
  • 不使用 DAO 压缩 Microsoft Access 数据库

    我用CDatabase类开一个ACCDB访问数据库 司机是 T Microsoft Access Driver mdb accdb 我可以打开并使用数据库 已经这样做很多年了 if DatabaseExist m strMDBPath AJ
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • 如何检查我的程序是否有数据通过管道传输到其中

    我正在编写一个应该通过标准输入读取输入的程序 所以我有以下结构 FILE fp stdin 但是 如果用户没有将任何内容通过管道传输到程序中 这就会挂起 我如何检查用户是否确实将数据通过管道传输到我的程序中 例如 gunzip c file
  • 更改为通用接口对性能的影响

    我使用 Visual Studio 使用 C NET 开发应用程序 ReSharper 在我的方法原型中经常建议我用更通用的类型替换输入参数的类型 例如 如果我仅在方法主体中使用带有 foreach 的列表 则使用 List 和 IEnum
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 如何使用 C# 以编程方式识别对方法的引用数量

    我最近继承了需要一些修剪和清理的 C 控制台应用程序 长话短说 该应用程序由一个包含超过 110 000 行代码的类组成 是的 单个类中有超过 110 000 行 当然 该应用程序是我们业务的核心 全天候运行更新动态网站上使用的数据 尽管我
  • 通过 C++ 标头在 C++ 和 C# 中使用枚举

    我有一个用 C 编写的服务器 位于命名管道的末端 嗯 提供服务 可以发送到服务器的命令在位于头文件中的枚举中定义 enum e doThing1 e doThing2 e doLastThing 所需枚举的值被放入发送到服务器的消息的第一个
  • 删除指针后将其设为 NULL 是一个好习惯吗?

    我首先要说的是 使用智能指针 您将永远不必担心这个问题 下面的代码有什么问题 Foo p new Foo use p delete p p NULL 这是由答案和评论 https stackoverflow com questions 19
  • 布尔实现的atomicCAS

    我想弄清楚是否存在错误答案 https stackoverflow com a 57444538 11248508 现已删除 关于Cuda like的实现atomicCAS for bool是 答案中的代码 重新格式化 static inl

随机推荐

  • Application Insights 安全和欺骗

    这可能是一个愚蠢的问题 但是客户端应用程序洞察是否不会被欺骗 Microsoft 要求您向需要记录的 HTML 页面添加一些 JavaScript 其中一部分包含硬编码的仪器密钥 下面不是真正的密钥 instrumentationKey 3
  • 如何查看 DLL 上的公钥令牌

    有谁知道查看 DLL 上的公钥令牌的方法吗 我正在调查代码中的预期内容与正在构建的内容之间可能存在的不匹配情况 提前致谢 它咕噜声 Use Assembly GetExecutingAssembly GetName GetPublicKey
  • 配置 g++ 使用 wxwidget 库构建 c++

    我一直在尝试在 Linux 中使用 Wxwidget 编译并运行一个简单的 C 程序 但是当我构建它时 这就是我尝试构建时得到的结果 Executing task g c find home sopheak Documents WXWIDG
  • 烦人的 vim(取消)缩进规则

    当编辑 PHP 代码 我不确定它是否特定于该语言 并且我在跨多行的逗号分隔列表中间创建一个新行时 缩进规则总是取消我要离开的行的缩进 这是一个视频 http toogeneric com files indent2 mov这种情况发生在数组
  • 等待审核的典型时间? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我将我的第
  • ValueError:无法将大小为 2 的序列复制到维度为 4 的数组轴

    谁能向我解释一下这个错误来自哪里 这意味着什么 我该如何解决这个问题 也许我的问题太笼统了 抱歉 但我不知道我应该在这里放更多什么 P Error Traceback most recent call last File C test 7
  • 大型对象的 Redux 性能

    我正在使用 Redux 和 React 构建一个 Web 应用程序 我的应用程序是一个呈现大量数据的分析应用程序 当我的商店变大时 我会遇到性能问题 避免 redux 中大数据出现性能问题的首选方法是什么 应用结构 我的应用程序的结构是这样
  • AWS 证书管理器 api 不显示导入的证书

    虽然证书管理器 UI 显示我导入的证书状态为 已颁发 但当尝试从 ELB 应用程序 lb 使用它时 我得到 没有可用的证书 对 api 的 POST 请求返回空列表 另外 当我运行 aws acm list certificates max
  • 维护 .NET 项目中引用的 COM dll 的正确版本

    我想在 NET 项目中引用 COM DLL 但我还想确保创建的互操作 DLL 具有正确的版本 以便补丁知道何时必须更改 DLL 如果我使用TlbImp我可以用以下命令指定所需的版本 asmversion标志 但当我直接从 Visual St
  • 如何在反应头盔中预加载最大内容的绘画图像

    我在灯塔收到这个警告 我尝试做 了解更多 链接告诉我要做的事情 并在图像的头部包含一个预加载标签 但我仍然收到警告 我尝试了这个预加载标签 该网址是当我右键单击图像并选择 在新选项卡中打开 时浏览器中的网址 图像刚刚导入到 jsx 组件中
  • Python csv writer 分隔符错误?

    免责声明 我在欧洲 根据这一页 http www paessler com knowledgebase en topic 2293 i have trouble opening csv files with microsoft excel
  • SimpleForm 不带 for(非模型表单)

    是否可以在没有模型的情况下使用简单表单 由 Plataformatec 提供 https github com plataformatec simple form https github com plataformatec simple
  • Xcode 静态分析器抱怨使用 ARC 时存在潜在泄漏

    我正在使用 ARC 和 ios sdk 6 0 我很确定我有一些内存泄漏 我很难追踪到 运行静态分析器后 我收到有关以下两种方法的警告 id
  • 在 Visual Studio 中调暗/隐藏代码日志行

    有什么方法可以使 Visual Studio 变暗或隐藏 显示我的代码的按需日志记录行 我们在项目中使用了大量的日志记录 并且很难阅读这样的代码 我希望它是这样的 例如 Unobtrusive Code 扩展对我来说适用于 Visual S
  • 是否可以通过编程方式禁用 iOS 7 中的控制中心?如果不能,有哪些替代方法?

    我开发了一个使用自下而上滑动手势的应用程序 它在 iOS 6 中工作得很好 但现在 iOS 7 出来了 它可能工作了二十五次之一 我几乎每次都会得到 iOS 7 控制中心 显然 可以在 设置 中禁用控制中心 但这取决于手机所有者 我无法控制
  • Python 中的“变量 //= 值”语法是什么意思? [复制]

    这个问题在这里已经有答案了 我遇到了代码语法d 2其中 d 是变量 这不是任何循环的一部分 我不太明白这个表达 有人可以启发我吗 是楼层划分操作员 这 旁边的意思是 就地 对变量进行操作 它类似于 and 运算符 如果您以前见过这些运算符
  • Python-算法语句

    我想编写一个执行以下操作的程序 输入示例 3 10 4 18 2 6 19 24 1 20 预期输出 4 2 2 2 6 1 1 输入将来自一个文件 其中第一行将包含窗口大小 N 第二行将包含由空格分隔的数字流 您需要输出每个窗口中以空格分
  • Jquery Datatable 将一行从一个表拖放到另一个表

    我正在使用 jquery dataTables js 并且尝试将行从一个表拖放到另一个表 反之亦然 从表 2 拖放到表 1 如下示例所示 http jsfiddle net yf47u http jsfiddle net yf47u 上面的
  • jenkins Slave 以用户身份运行

    我有一个詹金斯设置 有多个用户登录活动目录插件 http www greenreedtech com jenkins active directory 这很有用 这样每个用户都可以访问自己的任务 然而 每个用户在本地网络上也有不同的权限 例
  • 我可以传递前向声明的枚举值吗?

    当向前传递声明的结构或类时 必须通过引用或指针将其传递给函数 但是 前向声明的枚举可以做什么呢 它是否还必须通过引用或指针传递 或者说 可以传递一个值吗 下一个示例使用 g 4 6 1 编译良好 include