C++ 计时器类似乎不起作用
我的计时器类有问题,我想 由于某种原因,当我没有将它嵌套在类中时,它似乎可以工作,但当我尝试将它添加到类中时,它就停止了工作 它在std::线程内调用 endTime和startTime均=1.52426291e+09 elapsedTime始终为0C++ 计时器类似乎不起作用,c++,std,C++,Std,我的计时器类有问题,我想 由于某种原因,当我没有将它嵌套在类中时,它似乎可以工作,但当我尝试将它添加到类中时,它就停止了工作 它在std::线程内调用 endTime和startTime均=1.52426291e+09 elapsedTime始终为0 class Timer { public: Timer::Timer() { } Timer::~Timer() { } void Timer::init() {
class Timer
{
public:
Timer::Timer()
{
}
Timer::~Timer()
{
}
void Timer::init()
{
m_StartTime = std::chrono::system_clock::now().time_since_epoch();
}
void Timer::update()
{
m_EndTime = std::chrono::system_clock::now().time_since_epoch();
elapsedTime = std::chrono::duration_cast<std::chrono::milliseconds>(m_EndTime - m_StartTime).count();
m_StartTime = m_EndTime;
}
float Timer::getElapsedTimeInSec()
{
return this->elapsedTime;
}
private:
float elapsedTime;
std::chrono::duration<float> m_StartTime;
std::chrono::duration<float> m_EndTime;
};
类计时器
{
公众:
计时器::计时器()
{
}
计时器::~Timer()
{
}
void Timer::init()
{
m_StartTime=std::chrono::system_clock::now().时间(从新纪元开始);
}
无效计时器::更新()
{
m_EndTime=std::chrono::system_clock::now().time_since_epoch();
elapsedTime=std::chrono::duration_cast(m_EndTime-m_StartTime).count();
m_开始时间=m_结束时间;
}
浮点计时器::getElapsedTimeInSec()
{
返回此->elapsedTime;
}
私人:
浮动时间;
std::chrono::持续时间m_开始时间;
std::chrono::duration m_EndTime;
};
将m_StartTime和m_EndTime声明为时间点(而不是持续时间)。您在计算ElapTime时错过了从毫秒到秒的转换。下面是一个实现片段
class Timer
{
public:
Timer::Timer()
{
}
Timer::~Timer()
{
}
void Timer::init()
{
m_StartTime = std::chrono::system_clock::now();
}
void Timer::update()
{
m_EndTime = std::chrono::system_clock::now();
elapsedTime = std::chrono::duration_cast<std::chrono::milliseconds>(m_EndTime - m_StartTime).count()/1000;
m_StartTime = m_EndTime;
}
float Timer::getElapsedTimeInSec()
{
return this->elapsedTime;
}
private:
float elapsedTime;
std::chrono::system_clock::time_point m_StartTime;
std::chrono::system_clock::time_point m_EndTime;
};
int main()
{
Timer timer;
timer.init();
std::this_thread::sleep_for(std::chrono::seconds(2));
timer.update();
std::cout << timer.getElapsedTimeInSec() << " sec\n";
return 0;
}
类计时器
{
公众:
计时器::计时器()
{
}
计时器::~Timer()
{
}
void Timer::init()
{
m_StartTime=std::chrono::system_clock::now();
}
无效计时器::更新()
{
m_EndTime=std::chrono::system_clock::now();
elapsedTime=std::chrono::duration\u cast(m_EndTime-m_StartTime).count()/1000;
m_开始时间=m_结束时间;
}
浮点计时器::getElapsedTimeInSec()
{
返回此->elapsedTime;
}
私人:
浮动时间;
标准::时钟::系统时钟::时间点m_开始时间;
标准::时钟::系统时钟::时间点m_结束时间;
};
int main()
{
定时器;
timer.init();
std::this_thread::sleep_for(std::chrono::seconds(2));
timer.update();
std::cout删除所有计时器::
。它们只在类外的成员函数定义上需要。此外,您可以安全地删除空的ctor和dtor。此外,下次请包含准确的错误消息。@HolyBlackCat计时器::
仅在那里,因为我从我的cpp文件复制了它,将其放入一个文件。@wihutamiz Post a.类本身不起任何作用。使用该类的代码提供了适当的上下文。现在,默认情况下,构建计时器
类会使所有这些成员都未初始化。