【发布时间】:2020-03-01 16:45:57
【问题描述】:
我怎样才能创建一个计时器,在一定的持续时间后,它会做一些事情?到目前为止,我一直在尝试使用 % 操作。我在函数开始时做了一个计时器,然后减去当前时间(now() 函数)然后 i % 差 5 因为我想要 5 秒过去:
(at the start of the program i defined start as high_resolution_clock::now())
duration<double> dur = start-high_resolution_clock::now();
if(dur%5==0)
我得到的错误是:没有运算符“==”与这些操作数匹配——操作数类型是:std::chrono::duration> == int
【问题讨论】:
-
duration 有一个成员 count() 来返回毫秒数。见这里:stackoverflow.com/questions/20785687/…,或者尝试一个简单的网络搜索“Chrono to int”——这就是我所做的......
-
%(模运算符)只能用于整数。您可以尝试使用“long long int”类型(int64_t 或 uint64_t)。使用这个 int 你得到一个 64 位的整数,并且模运算符可以正常工作。
-
您遇到的第一个错误是什么?我收到有关 operator== 的错误,但这不是第一个错误。
-
我建议你在一个单独的线程上运行它,在那里有一个循环运行你想每 5 秒运行一次的代码 - 运行后五秒休眠。