#pragma once
#include <time.h>
class CTimer
{
time_t _last;
CTimer() { _last = time(NULL); }
CTimer(const CTimer &);
CTimer& operator=(const CTimer&);
~CTimer();
public:
static CTimer& getInstance(){
static CTimer instance;
return instance;
}
float getDelta(){
time_t now = time(NULL);
float delta = (float)(now - _last);
return delta;
}
//should be called at the beginning of rendering function
void update(){
_last = time(NULL);
}
};
Это мой одиночный код таймера. Я хотел использовать его как то: Где-то в игрока класса:Синглтон-деструктор, вызываемый ошибкой
posX += vel * CTimer::getInstance().getDelta();
И в главном файле петли:
void gameLoop(){
CTimer::getInstance().update();
...
}
Но я получаю эту ошибку:
1>Main.obj : error LNK2019: unresolved external symbol "private: __thiscall CTimer::~CTimer(void)" ([email protected]@[email protected]) referenced in function "void _cdecl
public: static class getInstance & __cdecl CTimer::getInstance(void)'::
2'::`dynamic atexit destructor for 'instance''(void)" (??[email protected][email protected]@@[email protected]@YAXXZ)
Я думаю, что его потому что главный код пытается вызвать деструктор, после окончания цикла, и я должен перейти к указателям singleton, но, возможно, нет. Не могли бы вы рассказать мне, как это исправить?
Предоставляли ли вы тело для деструктора? – JBL