在Qt文档中,它说a qreal是a
除非使用-qreal float选项配置Qt,否则键入为double.
这基本上意味着几乎总是double,但float在ARM设备.
我想使用qreal文字,但我不知道如何编写它们.
qreal someValue = calcFunc();
qreal min = qMin(someValue, 0.0);
Run Code Online (Sandbox Code Playgroud)
哪里0.0是double文字和0.0f将是一个float文字.在ARM上,这是一个编译错误,因为没有qMin(float, double)函数.
我可以写,static_cast<qreal>(0.0)但这似乎过于冗长.
那么我该如何定义qreal文字呢?
您可以使用 C++11用户定义的文字:
#include <QtCore>
constexpr qreal operator "" _qr(long double a){ return qreal(a); }
int main() {
qreal a = 3.0_qr;
Q_ASSERT(qMin(a, 4.0_qr) == a);
}
Run Code Online (Sandbox Code Playgroud)
如果它们在您的平台上不可用,您可以在需要时显式构造 qreals:
using _qr = qreal;
int main() {
qreal a = _qr(3.0);
Q_ASSERT(qMin(a, _qr(4.0)) == a);
}
Run Code Online (Sandbox Code Playgroud)