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