#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 デストラクタで参照「インスタンス」(無効) の場合" (?? _Finstance@?1??getInstance@CTimer@@SAAAV1@XZ@YAXXZ)
ループが終了した後、メインコードがデストラクタを呼び出そうとするためだと思いますが、ポインタシングルトンに変更する必要がありますが、そうではないかもしれません。これを修正する方法を教えていただけますか?