У меня есть этот простой таймер секундомера шаблона, который я планирую использовать в моем следующем проекте, всякий раз, когда я создаю этот класс, используя «Timer < float>», все работает отлично, однако если я use "Timer < int>" Я получаю ошибки.std :: chrono :: duration integer трудности
timer.h (18): ошибка C2440: '': не удается преобразовать из 'станд :: хронометр :: Продолжительность < _Rep, _Period>' на «станд :: хроно :: длительность < _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' уже определяет« часы минут секунд »и т. Д. Вам не нужно определять их самостоятельно. – Mgetz
Спасибо, что я изменил свой код, теперь он использует std :: chrono :: для всех функций для удобочитаемости! –