【发布时间】:2020-02-04 19:51:59
【问题描述】:
我的初始代码是
using n_time = std::chrono::high_resolution_clock;
n_time::time_point c_time = n_time::now();
n_time::time_point start = n_time::now();
auto gyro::duration(){
return std::chrono::duration_cast<std::chrono::milliseconds>(c_time-start).count();
}
但后来我意识到我想找到从开始参数到now() 的毫秒数,我不确定我的初始代码是否会给我这个。所以我尝试了
auto timeSince(n_time::time_point start) {
n_time now = n_time::now();
return std::chrono::duration_cast<std::chrono::milliseconds>(now - start).count();
}
这是您如何找到start 之后的毫秒数吗?听说有一个函数叫time_since_epoch(),不知道用这个函数会不会更好?
此时钟用于我正在尝试编写的特定机器人功能,因此我需要确保时钟不会导致转换错误:
void straight(int distance, int speed) {
int time = (distance / speed) * 1000; // milliseconds
while (timeSince() < time) {
// code
}
}
duration() 函数在我的函数中没有给出任何错误,但timeSince() 给我带来了转换错误,例如
错误:从“int”转换为非标量类型 'std::chrono::_V2::system_clock::time_point {aka std::chrono::time_point >
【问题讨论】:
-
你可以考虑使用
auto作为类型,因为你的n_time now=n_time::now();是错误的类型。除此之外,你的初始方法是正确的。