- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想在范围格式中使用枚举,但能够在枚举和无符号整数之间进行比较和赋值。
这是我尝试了下面的代码,它按预期工作:
class SystemEvents {
public:
enum {
Opened, Closed
};
};
class OtherEvents {
public:
enum {
Closed,Opened
};
};
//test
uint32_t e = SystemEvents::Opened;
if(e == OtherEvents::Closed) std::cout << "enums are weakly typed and scoped";
但我想知道是否有一种方法可以使用 C++11 语法来实现?
enum class SystemEvents : uint32_t {
Opened,Closed
};
enum class OtherEvents : uint32_t {
Closed,Opened
};
//test
uint32_t e = SystemEvents::Opened;
if(e == OtherEvents::Closed) std::cout << "enums are weakly typed and scoped";
上面的代码给了我预期的错误无法用 SystemEvents 类型的右值初始化 int 类型的变量
。那么,我应该坚持使用 C 风格的范围枚举,还是有办法在 C++11 中做到这一点?还是有其他方法可以做到这一点?
最佳答案
对于初始化,除了强制转换值之外,您无能为力。请注意,C++11 的强类型枚举并不是要替换而是补充现有枚举。如果您想要弱类型枚举,请不要使用enum class
。
对于强类型枚举的比较,您可以在实现中声明必要的运算符并强制转换:
bool operator==( uint32_t lhs, SystemEvents rhs )
{
return static_cast< SystemEvent >( lhs ) == rhs;
}
当然你需要两个方向:
bool operator==( SystemEvents lhs, uint32_t rhs );
和其他运算符,如 !=
。
关于c++ - 作用域但 "semi-weakly"类型枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205403/
我正在从lsp模式切换到eglot,并且在C#代码中得到了意外的缩进。我有一个最小的编辑配置文件,只需将INTENT_SIZE设置为2。在我遇到分号之前,一切似乎都很好,在分号处,当前行和下一行的缩进
Avalonia是什么? Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Androi
我知道我可以像这样获取给定字符串的所有子字符串: String inputString = "abcde"; java.util.Set substrings = new java.util.Tree
给定一个包含 N 个元素的数组,我正在寻找 M (M & result_start_idx ) { const size_t avg_interval_len = num_data / nu
我有一个名为 PaymentFrequency 的枚举类型,它的值表示每年支付了多少...所以我有 public enum PaymentFrequency { None
Windows Phone 工具包的集线器磁贴有问题。 当动画状态更改为“半展开”(图标 + 文本的一半可见)时,我的所有中心图块都会消失。一段时间后,它们会将它们的动画状态更改为不同的状态,并且文本
我尝试使用 alpha channel 渲染我的表面,但是当我设置 alpha 值时,它以随机颜色渲染而不是半透明 // Init memory Q3DSurface *poSurface = new
我知道不存在“半虚拟”方法,但是,我遇到了与设计相关的问题。 假设我有一个名为 WebPage 的基类。此类有一个名为 UpdatePage() 的方法。但是因为此方法存在于抽象 WebPage 对象
我有下面两张图片。 它们是相同的图像,其中一个对文本有轻微的发光效果。 它们的设置如下: 原始图像作为 div 的背景,“发光”图像作为 anchor 标记的背景,display:block; wid
根据 https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html -Wextra-semi 是一个有效的标志。然而,对我来说,即使是 gcc-7.2
编辑:这不是重复的 任何允许在 post() 中锁定互斥锁的问题。请仔细阅读,我需要一个无锁的 post()!如果您没有真正的答案,请不要标记此重复项。 信号量(如在 linux 中)是一个有用的构建
我正在为 semi circle donut 苦苦挣扎Highcharts 聊天。我试图缩小 donut 底部和下面的图例之间的差距,但没有成功。 这是我正在处理的基本图表: https://jsfi
我正在创建像半圆这样的速度计,并且我已经成功地创建了具有所有颜色的半圆。看下面的设计: 我面临的问题是创建用作指针的三 Angular 形。它将在值 300 到 850 之间移动。无论值在此范围内达到
我有一个案例,我需要一些 Controller 方法可以被经过身份验证的用户访问,或者如果请求在 url 中包含一种“访问 token ”。 例如: 经过身份验证的用户可以调用:https://exa
我正在寻找一种方法来禁用通知栏(状态栏)的打开和关闭动画。行为和动画被硬编码在 StatusBarService 中。文档说 StatusBarService 是“半公开的”。 “半公共(public
我想在范围格式中使用枚举,但能够在枚举和无符号整数之间进行比较和赋值。 这是我尝试了下面的代码,它按预期工作: class SystemEvents { public: enum {
我如何获得一个固定的侧边栏,例如包含本网站社交按钮的侧边栏: http://www.tripwiremagazine.com/2012/11/social-media-buttons-and-icon
我想要图像背景中的半圆形进度条。就像下图一样。 我曾尝试使用 Canvas 进行绘制,但未能成功。我也厌倦了一些自定义进度条库,但结果是一样的。 任何建议。 寻求一次性开发并用于各种屏幕尺寸。 最佳答
我正在使用带有 ffmpeg 64 位静态构建的 Windows 8.1 Pro,尝试运行以下 cmd "C:\ffmpeg\bin\ffmpeg.exe" -i "C:\ffmpeg\v.mp4"
是否可以使用 MSF api 将变量指定为半整数(V = 0 或 a = 5; Q1 = 5; Q2 10 * VPositive<= V <= 20 * VPositive ] ] 如果您使用
我是一名优秀的程序员,十分优秀!