#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 );
}
};
这是我的 Timer 单例代码。我想这样使用它:在玩家类的某个地方:
posX += vel * CTimer::getInstance().getDelta();
在主循环文件中:
void gameLoop(){
CTimer::getInstance().update();
...
}
但我得到这个错误:
1>Main.obj:错误LNK2019:未解析的外部符号“private:__thiscall CTimer::~CTimer(void)”(??1CTimer@@AAE@XZ) 在函数“void _ cdecl
public: static class getInstance & __cdecl CTimer::getInstance(void)'::
2'::`动态 atexit 析构函数中引用对于'实例''(void)" (?? _Finstance@?1??getInstance@CTimer@@SAAAV1@XZ@YAXXZ)
我认为这是因为主代码尝试在循环结束后调用析构函数,我应该更改为单例指针,但也许不是。你能告诉我如何解决这个问题吗?