シングルトンに変換したいグローバルクラスインスタンスを持つプログラムがあります。誰かがこれをどのように行うのが最善かについての簡単な例を教えてもらえますか?
ありがとう
以下についてのシングルトン:
class Singleton
{
public:
static Singleton & instance()
{
static Singleton s;
return s;
}
private:
Singleton();
Singleton(const Singleton &);
};
最初にアクセスしようとしたときに割り当て/初期化されたシングルトン。これにより、ソースファイル間で予測できない順序で初期化されるグローバルオブジェクトがより予測可能になります。
グローバルの代わりに、アクセスするたびstatic Singleton s;
に電話をかける必要があります。Singleton::instance()
編集:シングルトンの場合、クラスのインスタンスは1つだけです。静的関数を介してアクセスできる魔女です。通常、インスタンスまたはgetと呼びますが、好きなように呼び出すことができます。残りは通常のクラスと同じです。
C ++では、コピーコンストラクターをプライベートにする必要があることを忘れました。シングルトンはパブリックコンストラクターを持つことはできません。
このinstance()
関数は非表示の「グローバル変数」を返すので、それをそのまま使用できます。シングルトンにstrという名前の文字列があるとします。あなたはそれを設定することができますSingleton::instance().str = "something";