以下はシングルトンクラスのコードです
class single{
private:
int i;
single(int x): i(x){
}
public:
static single& getInstance(){
static single s(10);
return s;
}
void incPrint(){
++i;
cout i " ";
}
};
これで、同じコードで2つの異なるコードに対して2つの異なる結果が得られます
single d1 = single::getInstance();
d1.incPrint();
d1.incPrint();
single d2 = single::getInstance();
d2.incPrint();
d2.incPrint();
このコードは次の出力を生成します。
11 12 11 12
一方、このコードは
single & d1 = single::getInstance();
d1.incPrint();
d1.incPrint();
single & d2 = single::getInstance();
d2.incPrint();
d2.incPrint();
結果を生成します
11 12 13 14
ここで、後者は目的の出力です。これは、設計上の問題またはユーザーコーディングの問題によるものですか?2番目の結果のみが得られるようにするにはどうすればよいですか?
ありがとう