c++ - 将 QGyroscopeReading 转换为 QVector3D 的正确方法是什么?
问题描述
在Qt5中是否有正确/好的转换QGyroscopeReading
方法?QVector3D
QGyroscopeReading
将其x、y和z值存储为qreal
,而QVector3D
使用float
。
由于 qreal 不能保证是浮点数(它的类型是在 Qt 构建时指定的),所以无警告的天真转换看起来非常难看:
QGyroscopeReading gr;
QVector3D myVec(static_cast<float>(gr.x())
, static_cast<float>(gr.y())
, static_cast<float>(gr.z()));
肯定有更好的东西吗?
解决方案
它的设计看起来很丑。它必须提醒你这里有一些危险的代码。
为了防止在项目中传播此类代码,请从 QVector3D 继承您的类并使用qreal
参数定义构造函数。
class QRealVector3D: public QVector3D
{
QRealVector3D (qreal x, qreal y, qreal z):
QVector3D (static_cast<float>(x)
, static_cast<float>(y)
, static_cast<float>(z)
{}
}
推荐阅读
- single-sign-on - OIDC IdP 提供商之上的代理,用于接受来自服务提供商的 SAML 请求以进行 SSO
- sql-server - 在 Management Studio 中使用 Python 自动化“生成脚本”选项以从本地 SQL Server 获取数据并将其保存在 .sql 文件中
- reactjs - onClick OverlayView react-google-maps
- visual-studio - [Broken] 在 CPU 使用率报告的 Function Name 列中表示什么?
- javascript - 将嵌套对象数组扩展为路径数组的最快方法(lodash)
- java - Netbeans warning messages for int[] and int[][] differ
- google-maps - 带有服务帐户的 Google 地理编码 API
- r - 在R中扭转情节
- c - 需要帮助在 C 中创建自己的 getch() 函数,在控制台应用程序中使用 Windows API
- python - 计算所有列中数据框的多个值