嗯......从2天前开始,我一直致力于一个项目,记录你所做的点击并反复重复(就像机器人一样),问题是在记录点击之间的时间因为在使用" steady_clock :: now "来测量时间时在if语句中,它只在if语句中声明,如果我尝试使其成为具有NULL值的全局变量,编译器会抛出一个错误,因为" auto &# 34;变量类型必须具有默认值。
#include<chrono>
using namespace std::chrono;
auto start = NULL; //this is an error
int main()
{
if (!GetAsyncKeyState(VK_LBUTTON))
{
auto start = steady_clock::now();
}
else if (GetAsyncKeyState(VK_LBUTTON))
{
auto end = steady_clock::now();
std::chrono::duration<double> elapsed = end - start; //here the compiler throws me an error because start is not declared
}
}
如果有人回答我的问题,我将非常感激。
抱歉我的英文......
答案 0 :(得分:0)
这是decltype
有用的地方:
decltype(steady_clock::now()) start;
// ...
start = steady_clock::now();
它是括号内表达式的类型。
答案 1 :(得分:0)
首先,您正在尝试设置&#34; start&#34;两次,也试图以不正确的方式使用自动。当编译器看到 auto start = NULL 时应该假设什么?请仔细查看它是如何使用的。
与此同时,我认为你所寻找的是这样的:
#include<chrono>
std::chrono::steady_clock::time_point start; // You can mention the type of start and end explicitly,.
std::chrono::steady_clock::time_point end;
int main()
{
if (!GetAsyncKeyState(VK_LBUTTON))
{
start = std::chrono::steady_clock::now();
}
else // don't think you needed an else-if here.
{
end = std::chrono::steady_clock::now();
std::chrono::duration<double> elapsed = end - start;
}
}