今日、シングルトンについて質問しましたが、発生したいくつかのエラーを理解するのに苦労しています。次のコードがあります。
タイミング.h
class Timing {
public:
static Timing *GetInstance();
private:
Timing();
static Timing *_singleInstance;
};
タイミング.cpp
#include "Timing.h"
static Timing *Timing::GetInstance() { //the first error
if (!_singleInstance) {
_singleInstance = new Timing(); //the second error
}
return _singleInstance;
}
このコードには、理解できないエラーが 2 つあります。
メソッド
GetInstance()
はヘッダーで static として宣言されています。cpp ファイルで単語を省略しなければならないのはなぜstatic
ですか? エラーが発生します:「メンバー関数 'static Timing* Timing::GetInstance()' を静的リンケージを持つように宣言できません」。正しい書き方は次のとおりです。Timing *Timing::GetInstance() { ... }
なぜ私は書くことができないの
_singleInstance = new Timing();
ですか?「Timing::_singleInstance への未定義の参照」というエラーが表示されます。_singleInstance
cpp ファイルでグローバル変数として定義することで、このエラーを解決しました。