我不确定如何使用duration_cast及其语法。 duration_cast可以在std:chrono中的成员之间转换吗?可以用于将整数或浮点数转换为时间点吗?
我也在做一个项目,我正在尝试使用工期找到当前时间和初始时间之间的工期,但我一直收到错误No matching function for call to 'duration_cast'

#define time std::chrono::high_resolution_clock
#define duration(x, y) std::chrono::duration_cast<std::milli>(x-y)
    time::time_point c_time = time::now();
    time::time_point start;

        auto dur = duration(c_time, start);

最佳答案

几乎永远没有理由使用现代c ++接触预处理器。它混淆了您的代码并使其变得脆弱(显然,除了#include之外)。

您的代码可以重写为:

using time = std::chrono::high_resolution_clock;
auto duration = [](auto x, auto y) { return std::chrono::duration_cast<std::milli>(x-y); };
time::time_point c_time = time::now();
time::time_point start;
auto dur = duration(c_time, start);


您的代码的问题是std::milliratio而不是duration。您正在寻找std::chrono::milliseconds。该代码现在可以编译:

using time = std::chrono::high_resolution_clock;
auto duration = [](auto x, auto y) { return std::chrono::duration_cast<std::chrono::milliseconds>(x-y); };
time::time_point c_time = time::now();
time::time_point start;
auto dur = duration(c_time, start);

关于c++ - 不确定如何将duration_cast用作宏函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57009866/

10-09 06:39