获得最大的qint64数字和标量?

时间:2018-12-05 09:42:39

标签: c++

如何获取qint64数字和标量的最大值?

以下内容无效。我猜是因为std :: max既不接受也不返回qint64。

qint64 fromTimeStamp = -1;
qint64 fromTimeStampNonNegative = std::max(fromTimeStamp, 0);

1 个答案:

答案 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);