【发布时间】:2015-12-13 22:36:16
【问题描述】:
在我的项目中,在我升级到 VS2015 之前,它编译得很好。现在我遇到了 10 个与 std::chrono::timepoint 相关的错误。 这些都是错误:https://gyazo.com/0d3c51cf87c49661b0f24da4a027b0d9 (图片太多了)
导致错误的示例代码行:
fStart = clock::now(); 导致no operator '=' matches these operands
double t = std::chrono::duration_cast<std::chrono::milliseconds>(clock::now() - fStart).count();
原因
no instance of function template 'std::chrono::duraction_cast' matches the argument list. argument types are: ( <error-type> )
(fStart 是一个 chrono::system_clock::timepoint, t 显然是一个 double)
如果有人想查看这些错误,这里是完整的功能:
void Animation::update() {
using clock = std::chrono::high_resolution_clock;
if (animType == TYPE_MS) {
if (firstUpdate) {
fStart = clock::now();
firstUpdate = false;
}
double t = std::chrono::duration_cast<std::chrono::milliseconds>(clock::now() - fStart).count();
if (!paused) {
if (t >= frames[frame]->getTime())
advance();
}
} else if (animType == TYPE_FRAME) {
if (firstUpdate)
firstUpdate = false;
if (!paused)
fTime += speed;
if (speed < 0.0) {
if (fTime <= -frames[frame]->getTime())
advance();
} else {
if (fTime >= frames[frame]->getTime())
advance();
}
}
}
我应该怎么做才能解决这些问题?
【问题讨论】:
-
如果你不告诉我们
fStart是什么,我们怎么知道? :) -
一般来说,一个最小的、可重现的例子会很有帮助。
-
std::chrono::time_point是一个模板。来自不同时钟的 time_points 不一定是可转换的。我们需要知道实际的类型。 -
那是你的问题。您不能将
high_resolution_clock::time_point存储在system_clock::time_point中 -
见
[std::chrono::high_resolution_clock] may be an alias of std::chrono::system_clock or std::chrono::steady_clock, or a third, independent clock.here
标签: c++ visual-studio visual-c++ std chrono