私はシングルトンデザインパターンを理解しようとすると、最も単純なものを作成しました:C++でのシングルトンクラス作成時に静的関数が静的変数を参照できないのはなぜですか?
#include <iostream>
class mySingleton{
private:
static mySingleton *ptr;
mySingleton(){ }
public:
static mySingleton* getInstance(){
if(!ptr){
ptr = new mySingleton();
return ptr;
} else return ptr;
}
void msg(){
std::cout << " Hello World!! " << std::endl;
}
};
int main(){
mySingleton* obj = mySingleton::getInstance();
mySingleton* obj2 = mySingleton::getInstance();
return 0;
}
私がコンパイルしようとする私が取得:
私は、静的な関数内でptrを使用することはできませんなぜUndefined symbols for architecture x86_64:
"mySingleton::ptr", referenced from:
mySingleton::getInstance() in ccm822LI.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
、 ptrも静的変数なので?私はここに何かを逃していますか
答えをありがとうございました..私がラップしたい最後のもの私の頭の周り.. .. getInstance()は複数回呼び出すことができます...しかし、どのようにインスタンス化するオブジェクトは常に同じです..私は静的のためにそれを知っていますが、私は理解する必要があるものがまだ不足しています – pokche
@pokche 'getInstance()'への1回目の呼び出しはインスタンスの作成をトリガーし、次の呼び出しは1回目の呼び出しと同じ結果を得ます。 –
素晴らしい...私はそれが起こらなければならないようなことを知っていた...しかし、あなたは明らかに説明した...ありがとう:) – pokche