c++ - 从整数到枚举的首选转换样式 QEvent::Type
问题描述
我正在查看文档http://doc.qt.io/qt-5/statemachine-api.html中的 Qt 示例:
bool eventTest(QEvent *e) override
{
if (e->type() != QEvent::Type(QEvent::User+1)) // StringEvent
return false;
StringEvent *se = static_cast<StringEvent*>(e);
return (m_value == se->value);
}
但在这条线上:
e->type() != QEvent::Type(QEvent::User+1)
我不明白这里需要显式转换,即整数值,enum Event::Type
因为以下也适用:
e->type() != QEvent::User+1 // no explicit cast
那么使用显式强制转换更好吗?为什么?
谢谢你。
解决方案
的类型QEvent::User + 1
是int
。当然,将结果QEvent::Type
转换为QEvent::Type
,我猜那是它的原始类型,以及e->Type()
.
你是对的,不需要演员阵容,尽管原因不那么直接。在e->Type() == QEvent::User + 1
中,右侧有 type int
,所以左侧被提升为int
并且对int
值进行比较。通常,这完全没问题。enums
自古以来就是这样使用的。在我看来,这种演员阵容就像将形式主义提升到现实之上。有些人喜欢这样做。
推荐阅读
- angular - 能否将新的独立 Angular 项目(esproj)直接从 VS2022 发布到 Azure?
- node.js - throw new Error('无法创建没有访问令牌的客户端');
- javascript - 如何返回回调node.js?
- android - 将格子 UI 添加到 Xamarin Forms 跨平台移动应用程序(iOS、Android)
- php - MODX 中的 PDO 无缓冲查询
- python - 在 Python 中从文本文件中删除重复的反向字符串
- java - 对扫描器类的输入使用比较运算符
- iphone - 如何忘记 iPhone 11 上的旧 Outlook 电子邮件
- javascript - 如何使用下划线对这个哈希数组进行排序和过滤
- caching - 如何防止litespeed在woocommerce中缓存价格和数量?