У меня есть этот простой таймер-секундомер шаблона, который я планирую использовать в своем следующем проекте, всякий раз, когда я создаю экземпляр этого класса, используя «Timer‹ float>», все работает нормально, однако, если я использую «Timer‹ int>», я получаю ошибки.
timer.h(18): ошибка C2440: '': невозможно преобразовать из 'std::chrono::duration‹_Rep,_Period>' в 'std::chrono::duration‹_Rep,_Period>'
Я не знаю, почему это происходит, вся помощь приветствуется, заранее спасибо!
template< typename type > class Timer
{
public:
void Start(){ m_Start = m_Time.now(); }
void Reset(){ m_Start = m_Time.now(); m_Split = m_Start; }
void Split(){ m_Split = m_Time.now(); }
type HoursSinceStart() { return std::chrono::duration< type, std::ratio< 3600 > >( m_Time.now() - m_Start ).count(); }
type MinutesSinceStart() { return std::chrono::duration< type, std::ratio< 60 > >( m_Time.now() - m_Start ).count(); }
type SecondsSinceStart() { return std::chrono::duration< type, std::ratio< 1 > >( m_Time.now() - m_Start ).count(); }
type MilliSecondsSinceStart() { return std::chrono::duration< type, std::milli >( m_Time.now() - m_Start ).count(); }
type MicroSecondsSinceStart() { return std::chrono::duration< type, std::micro >( m_Time.now() - m_Start ).count(); }
type NanoSecondsSinceStart() { return std::chrono::duration< type, std::nano >( m_Time.now() - m_Start ).count(); }
type HoursSinceSplit() { return std::chrono::duration< type, std::ratio< 3600 > >( m_Time.now() - m_Split ).count(); }
type MinutesSinceSplit() { return std::chrono::duration< type, std::ratio< 60 > >( m_Time.now() - m_Split ).count(); }
type SecondsSinceSplit() { return std::chrono::duration< type, std::ratio< 1 > >( m_Time.now() - m_Split ).count(); }
type MilliSecondsSinceSplit() { return std::chrono::duration< type, std::milli >( m_Time.now() - m_Split ).count(); }
type MicroSecondsSinceSplit() { return std::chrono::duration< type, std::micro >( m_Time.now() - m_Split ).count(); }
type NanoSecondsSinceSplit() { return std::chrono::duration< type, std::nano >( m_Time.now() - m_Split ).count(); }
private:
std::chrono::high_resolution_clock m_Time;
std::chrono::high_resolution_clock::time_point m_Start;
std::chrono::high_resolution_clock::time_point m_Split;
};
std::chrono
уже определяетhours minutes seconds
и т. д., вам не нужно определять их самостоятельно. - person Mgetz   schedule 19.03.2015