在我的项目中,在升级到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显然是双倍的)
如果有人想看到这些错误,那么这是完整的功能:
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();
}
}
}
我该怎么做才能解决这些问题?
答案 0 :(得分:1)
我建议放弃使用std::chrono::high_resolution_clock
。
如果您需要在处理器运行或流程之间保持稳定的time_point
,请使用与民事日历具有明确关系的std::chrono::system_clock
。
否则使用std::chrono::steady_clock
。这个时钟就像秒表。它适用于计时,但它不能告诉你当前(民用)时间。