我有以下方法可以摄入std::chrono::milliseconds
void SomeMethod(std::chrono::milliseconds some_value) {
// some logic
}
我可以通过以下方式调用它:
using namespace std::chrono_literals;
SomeMethod(1000ms);
作品。
但是,我想通过传递成员变量或一些全局声明的变量以下面的方式调用它。像这样的东西,
using namespace std::chrono_literals;
std::chrono::system_clock::duration timeout = 3000ms;
但是我收到以下错误:
error: no viable conversion from 'duration<[...], ratio<[...], 1000000>>' to 'duration<[...], ratio<[...], 1000>>'
SomeMethod(some_value);
^~~~~~~
答案 0 :(得分:7)
错误消息告诉您正在尝试将微秒转换为毫秒。 system_clock::duration
必须是您平台上std::chrono::microseconds
的typedef。
您可以在milliseconds
行中隐式转换microseconds
到std::chrono::system_clock::duration timeout = 3000ms;
,但转换为需要duration_cast
的其他方式:
std::chrono::duration_cast<std::chrono::milliseconds>(timeout);