Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从整数到枚举QEvent::Type的首选强制转换样式_C++_Qt_Casting - Fatal编程技术网

C++ 从整数到枚举QEvent::Type的首选强制转换样式

C++ 从整数到枚举QEvent::Type的首选强制转换样式,c++,qt,casting,C++,Qt,Casting,我正在从文档中查看此Qt的示例: 我不理解这里是否需要显式强制转换,即enum Event::Type的整数值,因为以下方法也适用: e->type() != QEvent::User+1 // no explicit cast 那么,使用显式强制转换更好吗?为什么 谢谢。上的在线文档 虽然可以使用static\u cast获取枚举数的数值,但没有从作用域枚举数的值到整数类型的隐式转换 所以,是的,对于这种转换,您需要显式强制转换 但即使QEvent::Type不是作用域枚举并允

我正在从文档中查看此Qt的示例:

我不理解这里是否需要显式强制转换,即
enum Event::Type
的整数值,因为以下方法也适用:

e->type() != QEvent::User+1 // no explicit cast    
那么,使用显式强制转换更好吗?为什么


谢谢。

上的在线文档

虽然可以使用
static\u cast
获取枚举数的数值,但没有从作用域枚举数的值到整数类型的隐式转换

所以,是的,对于这种转换,您需要显式强制转换

但即使
QEvent::Type
不是作用域枚举并允许隐式转换,
static_cast
也是一种很好的方法


请阅读此常见问题解答:

QEvent::User+1的类型是
int
。当然,将结果转换为
QEvent::Type
会将其转换为
QEvent::Type
,我猜这是它的原始类型,也是
e->Type()的类型


你说得对,演员阵容是不需要的,尽管原因不那么直接。在
e->Type()==QEvent::User+1
中,右侧有Type
int
,因此左侧提升为
int
,并对
int
值进行比较。通常,这是完全可以的;这就是自古以来使用枚举的方式。在我看来,这一角色似乎将形式主义凌驾于现实之上。有些人喜欢这样做。

在C++中,STATICE-CAST是首选的方法,即使它是隐式的转换。请看这个我编辑了这个问题来澄清它:实际上我是在问我是否需要显式强制转换。但是QEvent::Type不是一个作用域枚举,它也在没有显式强制转换的情况下工作。我不熟悉Qt,我假设它是一个作用域枚举,因为
。好的,但是
e->Type()
已经返回了一个
QEvent::Type
枚举值,并且我们正在将其与枚举的有效值进行比较。是否是相同类型的
QEvent::Type
QEvent::User
e->Type()
yes,而
QEvent::User
是在
QEvent
类中定义的
QEvent::Type
枚举的可能值之一
e->type() != QEvent::Type(QEvent::User+1)
e->type() != QEvent::User+1 // no explicit cast