gpt4 book ai didi

c++ - 从整数到枚举 QEvent::Type 的首选转换样式

转载 作者:行者123 更新时间:2023-11-28 04:26:34 25 4
gpt4 key购买 nike

我正在查看来自文档 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 中,右侧的类型为 int,因此左侧被提升为 int 并且比较是在 int 值上完成的。通常,这完全没问题; enums 自古以来就是这样使用的。在我看来,这个 Actor 阵容就像是将形式主义置于现实之上。有些人喜欢这样做。

关于c++ - 从整数到枚举 QEvent::Type 的首选转换样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54179415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com