如何获得qint64数字和标量的最大值?
以下无效。我猜是因为std::max既不接受也不返回qint64。
qint64 fromTimeStamp = -1;
qint64 fromTimeStampNonNegative = std::max(fromTimeStamp, 0);
最佳答案
问题不在于qint64
不知道std::max
。它只是long long
的typedef。这不起作用的真正原因是您指定了两种不同的模板类型:
std::max的(简化的)签名是
template <typename T>
T max(T a, T b);
如果使用参数调用它,则有2种不同的类型
T
。一方面是qint64
,另一方面是int
(由0
文字确定)。这不起作用,因为编译器要求两个参数具有相同的类型。您要做的就是确保它们是模板类型或明确指定模板类型。以下所有示例都可以这样做,因此可以正常工作:
std::max(fromTimeStamp, 0ll);
std::max(fromTimeStamp, static_cast<qint64>(0));
std::max<qint64>(fromTimeStamp, 0);