у меня есть Timer
класс, но всякий раз, когда я пытаюсь изменить значение любой переменной, переменная просто остается на нуле. SDL_GetTicks()
возвращает значение, которое оно должно, но когда я пытаюсь присвоить это значение переменной, эта переменная остается равной нулю. Я пробовал жесткое кодирование в числах, и переменная по-прежнему остается на нуле. Переменные в моем Main
классная работа просто отлично, но когда я пытаюсь изменить что-то из этого, это не работает. Также метод timeSinceCreation()
также возвращает ноль.
#include "Timer.h"#include "SDL.h"
Timer::Timer() : m_timeOfLastCall(0.0f)
{
SDL_Init(SDL_INIT_TIMER);
}
Timer::~Timer() {}
float Timer::timeSinceCreation()
{
return SDL_GetTicks();
}
float Timer::timeSinceLastFrame()
{
float thisTime = timeSinceCreation();
float deltaTime = thisTime - m_timeOfLastCall;
m_timeOfLastCall = thisTime;
printf("%u ms \n", thisTime );
return deltaTime;
}
Ваш код имеет неопределенное поведение, потому что ваш printf
вызов имеет несовпадающий тип (%u
требует unsigned int
, но вы проходите в float
). В результате вы не должны ожидать какого-либо разумного поведения.
Других решений пока нет …