如何定义一个qreal文字

时间:2016-06-17 08:42:54

标签: qt literals

在Qt文档中,它表示qreal

  

除非Qt配置了-qreal float选项,否则Typedef为double。

这基本上意味着ARM设备上几乎总是doublefloat

我想使用qreal文字,但我不知道如何编写它们。

qreal someValue = calcFunc();
qreal min = qMin(someValue, 0.0);

其中0.0double字面值,0.0ffloat字面值。在ARM上,这是一个编译错误,因为没有qMin(float, double)函数。

我可以写static_cast<qreal>(0.0),但这看起来过于冗长。

那么如何定义qreal字面值?

1 个答案:

答案 0 :(得分:3)

您可以使用C ++ 11 Button HTML Code

#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);
}

如果您的平台上没有它们,您可以在需要时明确构建qreals:

using _qr  = qreal;

int main() {
   qreal a = _qr(3.0);
   Q_ASSERT(qMin(a, _qr(4.0)) == a);
}